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));
        }
示例#2
0
        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);
        }
示例#4
0
        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;
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        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));
        }