Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public async Task StoreCourseFootageForHole(UploadCourseVideoViewModel successfulCourseFootageUpload)
 {
     await _golfCourseRepository.AddCourseFootageForHole(successfulCourseFootageUpload.CourseId,
                                                         successfulCourseFootageUpload.HoleNumber, successfulCourseFootageUpload.YouTubeVideoId);
 }