public ActionResult CustomFields(string accountItemId, string videoId, VideoCustomFields videoCustomFields) { var accountItem = Sitecore.Context.Database.GetItem(new ID(accountItemId)); var authenticator = new BrightcoveAuthenticator(accountItem); var proxy = new VideoProxy(authenticator); var customFieldsResponse = proxy.RetrieveCustomFields(); proxy.UpdateCustomFields(videoId, videoCustomFields.Fields); var video = proxy.RetrieveById(videoId); var fields = (from cf in customFieldsResponse.CustomFields from vf in video.CustomFields.Select(i => new FieldInfo { Id = i.Key, Value = i.Value }) where cf.Id.Equals(vf.Id, StringComparison.OrdinalIgnoreCase) select MapValue(vf, cf)).ToList(); fields = customFieldsResponse.CustomFields.Where(i => i.EnumValues == null || i.EnumValues.Count > 0).Select(AddEmptyEnumValue).ToList(); var model = new VideoCustomFields { Video = video, Fields = fields }; ViewData["AjaxType"] = "post"; return(View("~/sitecore modules/Web/MediaFramework/MVC/Views/Brightcove/VideoCustomFields.cshtml", model)); }
protected override object Update(ExportOperation operation) { var itemSynchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item); if (itemSynchronizer == null) { return(null); } var playList = (PlayList)itemSynchronizer.CreateEntity(operation.Item); playList.ReferenceId = null; //Video ids used only for EXPLICIT playlist. //In other case will be used playlistsearch if (playList.PlaylistType == PlaylistType.EXPLICIT.ToString()) { playList.PlayListSearch = null; } else { playList.VideoIds = null; } var authenticator = new BrightcoveAuthenticator(operation.AccountItem); var data = new PlaylistProxy(authenticator).Patch(playList); if (data == null) { return(null); } return(data); }
/// <summary> /// Update /// </summary> /// <param name="operation"></param> /// <returns></returns> protected override object Update(ExportOperation operation) { IItemSynchronizer itemSynchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item); if (itemSynchronizer == null) { return(null); } var video = (Video)itemSynchronizer.CreateEntity(operation.Item); if (video.CustomFields != null && video.CustomFields.Count == 0) { video.CustomFields = null; } var authenticator = new BrightcoveAuthenticator(operation.AccountItem); var result = new VideoProxy(authenticator).Patch(video); if (result == null || result.Id == null) { return(null); } if (result.CustomFields == null) { result.CustomFields = video.CustomFields; } return(result); }
private static VideoTextTracks CreateModel(string accountItemId, string videoId) { var accountItem = Sitecore.Context.Database.GetItem(new ID(accountItemId)); var authenticator = new BrightcoveAuthenticator(accountItem); var proxy = new VideoProxy(authenticator); return(CreateModel(proxy, videoId)); }
protected VideoUploadExecutorBase(Item accountItem, UploadFileInfo uploadFileInfo) { var account = new BrightcoveAuthenticator(accountItem); Authenticator = account; PublisherId = account.PublisherId; UploadFileInfo = uploadFileInfo; }
protected override void Delete(ExportOperation operation) { var itemSynchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item); if (itemSynchronizer == null) { return; } var authenticator = new BrightcoveAuthenticator(operation.AccountItem); new PlaylistProxy(authenticator).Delete(((Asset)itemSynchronizer.CreateEntity(operation.Item)).Id); }
public static void SetIngestStatus(Notification notification) { if (notification == null) { return; } if (!notification.IsVideoUpload()) { return; } var videoItem = GetSearchResult(notification.Entity); if (videoItem == null) { return; } var accountItem = GetAccountItem(videoItem.GetItem()); if (accountItem == null) { return; } string fieldValue; if (notification.IsSuccess()) { var authenticator = new BrightcoveAuthenticator(accountItem); var proxy = new VideoProxy(authenticator); var response = proxy.RetrieveSourcesById(notification.Entity); if (response != null && response.Count > 0) { fieldValue = response.Count + " sources found."; } else { fieldValue = "No sources found."; } } else { fieldValue = "Ingest Failed"; } // Set the ingest successful field value videoItem.SetIngestSuccessfulField(fieldValue); }
protected override void Delete(ExportOperation operation) { IItemSynchronizer itemSynchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item); if (itemSynchronizer == null) { return; } var video1 = (Video)itemSynchronizer.CreateEntity(operation.Item); var video2 = new Video(); video2.Id = video1.Id; video2.ItemState = ItemState.INACTIVE; Video video3 = video2; var authenticator = new BrightcoveAuthenticator(operation.AccountItem); new VideoProxy(authenticator).Patch(video3); }
public ActionResult TextTracks(string accountItemId, string videoId, VideoTextTracks videoTextTracks) { var accountItem = Sitecore.Context.Database.GetItem(new ID(accountItemId)); var authenticator = new BrightcoveAuthenticator(accountItem); var proxy = new VideoProxy(authenticator); bool uploadingTracks = false; if (videoTextTracks.Tracks != null && videoTextTracks.Tracks.Count > 0) { var anyToSaveOrUpload = videoTextTracks.Tracks.Any(i => !i.IsDelete); var anyFileUpload = videoTextTracks.Tracks.Any(i => i.File != null); var tracksToIngest = new List <IngestTextTrack>(); var tracksToSave = new List <VideoTextTrack>(); var callbackUrl = string.Empty; if (anyToSaveOrUpload) { if (anyFileUpload) { var stringId = ID.NewID.ToUrlString(); var storageExecutor = StorageServiceManager.Service.GetExecutor() as StorageExecutor; var files = videoTextTracks.Tracks.Where(i => i.File != null).Select(i => new { key = i, file = new UploadFileInfo { Name = i.File.FileName, Bytes = new BinaryReader(i.File.InputStream).ReadBytes(i.File.ContentLength), Id = stringId } }).ToDictionary(a => a.key, a => a.file); var objectItem = StorageServiceManager.Service.GetExecutor().Save(files.Values.ToList()).FirstOrDefault(); (from i in videoTextTracks.Tracks from j in files where i == j.Key select MapFileUploadInfo(i, j.Value)).ToList(); if (objectItem != null) { callbackUrl = Settings.IngestionCallbackUrl(storageExecutor.Config.BaseUrl, ((MediaItem)objectItem).InnerItem.Parent.ID.ToUrlString()); } } tracksToSave = videoTextTracks.Tracks.Where(i => !i.IsDelete && !i.IsUpload).Select(MapToVideoTextTrack).ToList(); tracksToIngest = videoTextTracks.Tracks.Where(i => !i.IsDelete && i.IsUpload).Select(MapToIngestTextTrack).ToList(); } proxy.UpdateTextTracks(videoId, tracksToSave); if (tracksToIngest.Count > 0) { var ingestProxy = new DynamicIngestProxy(authenticator); ingestProxy.Ingest(new IngestVideo { VideoId = videoId, TextTracks = new Collection <IngestTextTrack>(tracksToIngest), Callbacks = string.IsNullOrEmpty(callbackUrl) ? null : new Collection <string> { callbackUrl } }); uploadingTracks = true; } } var model = CreateModel(proxy, videoId, uploadingTracks); return(View("~/sitecore modules/Web/MediaFramework/MVC/Views/Brightcove/VideoTextTracks.cshtml", model)); }