public async Task <string> UploadCourseFootageAsync(UploadCourseVideoViewModel courseVideoContents) { try { var initialPostClient = new WebClient(); initialPostClient.Headers.Clear(); initialPostClient.Headers.Add("Authorization", _vimeoUploadAccessToken); var vimeoTicket = JsonConvert.DeserializeObject <JObject>(initialPostClient.UploadString( "https://api.vimeo.com/me/videos", "POST", "")); var uploadLink = vimeoTicket["upload"]["upload_link"].ToString(); var file = File.ReadAllBytes(courseVideoContents.HoleVideoPath); initialPostClient.Headers.Clear(); var result = await initialPostClient.UploadDataTaskAsync(uploadLink, "PUT", file); var uploaderClient = new WebClient(); uploaderClient.Headers.Clear(); uploaderClient.Headers.Add("Content-Range", "bytes */*"); try { uploaderClient.UploadData(uploadLink, "PUT", new byte[0]); } catch (Exception uploadException) { uploadException.GetBaseException(); //It is returning a 308 which seems to be okay because it is getting to vimeo //now grab the id.. a bit hacky.. var uriWithVimeoId = vimeoTicket["uri"].ToString(); var vimeoId = uriWithVimeoId.Replace("/videos/", ""); return(vimeoId); } } catch (Exception generalException) { generalException.GetBaseException(); return(string.Empty); } //This must mean we did not get the 308. return(string.Empty); }
public async Task StoreCourseFootageForHole(UploadCourseVideoViewModel successfulCourseFootageUpload) { await _golfCourseRepository.AddCourseFootageForHole(successfulCourseFootageUpload.CourseId, successfulCourseFootageUpload.HoleNumber, successfulCourseFootageUpload.YouTubeVideoId); }