Skip to content

Instantly share code, notes, and snippets.

@kcleereman
Created January 15, 2014 17:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kcleereman/8441039 to your computer and use it in GitHub Desktop.
Save kcleereman/8441039 to your computer and use it in GitHub Desktop.
object Dependencies {
...
val googleApi = "com.google.api-client" % "google-api-client" % "1.17.0-rc"
val googleJackson = "com.google.api-client" % "google-api-client-jackson2" % "1.17.0-rc"
val gdata = "com.google.gdata" % "core" % "1.47.1"
...
}
trait BallerUploadService extends UploadService {
...
private val youTubeService: YouTubeService = {
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport
import com.google.api.client.json.jackson2.JacksonFactory
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential
import com.google.api.client.googleapis.auth.oauth2.GoogleOAuthConstants
val devKey = "AIzaSyBdcsn5jXGrI6QCa02VuP9GJGkRV6WCyJ0"
val service = new YouTubeService("", devKey)
val transport = GoogleNetHttpTransport.newTrustedTransport()
val jsonFactory = JacksonFactory.getDefaultInstance
val accessToken = "ya29.AHES6ZROnO5bMxpnH8PI2V7sqJVwG1246e1XnerZN9oQATzZKu_sHw"
val refreshToken = "1/Za65WdEvR92iaYOaeNCiq5zCkc01aZsNdYLg2r6FDFY"
val clientId = "591430022570.apps.googleusercontent.com"
val clientSecret = "kte-djOuXawZhyjVdxPGBHV9"
val redirectUris = {
val temp = new java.util.ArrayList[String]
temp.add("http://s195.qa1.sport195.com")
temp
}
val clientSecrets: GoogleClientSecrets = {
val secrets = new GoogleClientSecrets()
val details = new GoogleClientSecrets.Details()
details.setAuthUri(GoogleOAuthConstants.AUTHORIZATION_SERVER_URL)
details.setClientId(clientId)
details.setClientSecret(clientSecret)
details.setRedirectUris(redirectUris)
details.setTokenUri(GoogleOAuthConstants.TOKEN_SERVER_URL)
secrets.setWeb(details)
secrets
}
val googleCredential: GoogleCredential = new GoogleCredential.Builder()
.setTransport(transport)
.setJsonFactory(jsonFactory)
.setClientSecrets(clientSecrets)
.build()
.setAccessToken(accessToken)
.setRefreshToken(refreshToken)
googleCredential.refreshToken()
service.setOAuth2Credentials(googleCredential)
service
}
private val uploadUrl = new URL("http://uploads.gdata.youtube.com/feeds/api/users/default/uploads")
def uploadVideo(user: User, file: File): SResult[String] = {
val videoEntry = new VideoEntry
val mediaGroup = videoEntry.getOrCreateMediaGroup
mediaGroup.setTitle(new MediaTitle())
mediaGroup.getTitle.setPlainTextContent("Test Title")
mediaGroup.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Sports"))
mediaGroup.setKeywords(new MediaKeywords)
mediaGroup.getKeywords.addKeyword("sports")
mediaGroup.setDescription(new MediaDescription)
mediaGroup.getDescription.setPlainTextContent("Description")
mediaGroup.setPrivate(false)
mediaGroup.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "dev tag"))
videoEntry.setLocation("New York, NY")
videoEntry.setMediaSource(new MediaFileSource(file, "video/mp4"))
val createdEntry = youTubeService.insert(uploadUrl, videoEntry)
createdEntry.getId.sSuccess
}
}
object UploadsController extends AppController {
...
def uploadVideo = BasicAction(WithSession) {
request => {
request.rUser.flatMap(user =>
request.body.rToMultipartForm.flatMap(data =>
data.file("video_name") match {
case Some(filePart) => {
val fileName = filePart.filename
val file = new File("/tmp/" + java.util.UUID.randomUUID().toString + fileName)
filePart.ref.moveTo(file)
uploads.uploadVideo(user, file)
}
case _ => IllegalArgument("invalid file").sFail
}
)
)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment