Created
January 15, 2014 17:57
-
-
Save kcleereman/8441039 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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