Esempio n. 1
0
        /// <summary>
        /// Update a label.
        /// </summary>
        /// <param name="operation">
        /// The operation.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        protected override object Update(ExportOperation operation)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item);

            if (synchronizer == null)
            {
                return(null);
            }

            var authenticator = new OoyalaAthenticator(operation.AccountItem);
            var context       = new RestContext(Constants.SitecoreRestSharpService, authenticator);

            var lab = (Label)synchronizer.CreateEntity(operation.Item);

            return(context.Update <Label, Label>(
                       "update_label",
                       new Label {
                Name = lab.Name, ParentId = !string.IsNullOrEmpty(lab.ParentId) ? lab.ParentId : "root"
            },
                       new List <Parameter>
            {
                new Parameter
                {
                    Type = ParameterType.UrlSegment,
                    Name = "id",
                    Value = lab.Id
                }
            }).Data);
        }
Esempio n. 2
0
        /// <summary>
        /// Deletes a video.
        /// </summary>
        /// <param name="operation">
        /// The operation.
        /// </param>
        protected override void Delete(ExportOperation operation)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item);

            if (synchronizer == null)
            {
                return;
            }

            var authenticator = new OoyalaAthenticator(operation.AccountItem);
            var context       = new RestContext(Constants.SitecoreRestSharpService, authenticator);

            var video = (Video)synchronizer.CreateEntity(operation.Item);

            context.Delete <Video, RestEmptyType>(
                "delete_video",
                parameters:
                new List <Parameter>
            {
                new Parameter
                {
                    Name  = "embedcode",
                    Type  = ParameterType.UrlSegment,
                    Value = video.EmbedCode
                }
            });
        }
Esempio n. 3
0
        /// <summary>
        /// Deletes a label.
        /// </summary>
        /// <param name="operation">
        /// The operation.
        /// </param>
        protected override void Delete(ExportOperation operation)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item);

            if (synchronizer == null)
            {
                return;
            }

            var authenticator = new OoyalaAthenticator(operation.AccountItem);
            var context       = new RestContext(Constants.SitecoreRestSharpService, authenticator);

            var label = (Label)synchronizer.CreateEntity(operation.Item);

            context.Delete <Label, RestEmptyType>(
                "delete_label",
                parameters:
                new List <Parameter>
            {
                new Parameter
                {
                    Type  = ParameterType.UrlSegment,
                    Name  = "id",
                    Value = label.Id
                }
            });
        }
Esempio n. 4
0
        protected override void Delete(ExportOperation operation)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item);

            if (synchronizer == null)
            {
                return;
            }

            var video = (Video)synchronizer.CreateEntity(operation.Item);

            var inactivatedVideo = new Video
            {
                Id        = video.Id,
                ItemState = ItemState.INACTIVE
            };

            var authenticator = new BrightcoveAthenticator(operation.AccountItem);

            var context = new RestContext(Constants.SitecoreRestSharpService, authenticator);

            var updateData = new PostData("update_video", authenticator, "video", inactivatedVideo);

            var data = context.Update <PostData, ResultData <Video> >("update_data", updateData).Data;
        }
        protected override void Delete(ExportOperation operation)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item);

            if (synchronizer == null)
            {
                return;
            }

            var playlist = (PlayList)synchronizer.CreateEntity(operation.Item);

            var parameters = new Dictionary <string, object>
            {
                { "playlist_id", playlist.Id },
                { "cascade", "true" },
            };

            var authenticator = new BrightcoveAthenticator(operation.AccountItem);

            var updateData = new PostData("delete_playlist", authenticator, parameters);

            var context = new RestContext(Constants.SitecoreRestSharpService, authenticator);

            context.Delete <PostData, ResultData <PlayList> >("update_data", updateData);
        }
Esempio n. 6
0
        /// <summary>
        /// Creates a channel.
        /// </summary>
        /// <param name="operation">
        /// The operation.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        protected override object Create(ExportOperation operation)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item);

            if (synchronizer == null)
            {
                return(null);
            }

            var authenticator = new OoyalaAthenticator(operation.AccountItem);

            var context = new RestContext(Constants.SitecoreRestSharpService, authenticator);

            var channel = (Channel)synchronizer.CreateEntity(operation.Item);

            channel.EmbedCode            = null;
            channel.CreatedAt            = null;
            channel.UpdatedAt            = null;
            channel.Duration             = null;
            channel.PostProcessingStatus = null;
            channel.Metadata             = null;
            channel.PreviewImageUrl      = null;
            channel.Status = null;

            var createdChannel = context.Create <Channel, Channel>("create_channel", channel).Data;

            this.UpdateLineup(operation, createdChannel.EmbedCode);
            this.UpdateLabels(operation, createdChannel.EmbedCode);
            this.UpdatePlayer(operation, createdChannel.EmbedCode);
            this.UpdateMetadata(operation, createdChannel.EmbedCode);

            return(createdChannel);
        }
        /// <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);
        }
        protected virtual void InitPlayersList(Item item)
        {
            IPlayerMarkupGenerator generator = MediaFrameworkContext.GetPlayerMarkupGenerator(item);

            if (generator == null)
            {
                return;
            }

            Item account = AccountManager.GetAccountItemForDescendant(item);

            if (account == null)
            {
                return;
            }

            var players = AccountManager.GetPlayers(account);

            this.PlayersList.Controls.Clear();
            foreach (var playerItem in players)
            {
                this.PlayersList.Controls.Add(new ListItem
                {
                    ID       = Control.GetUniqueID("ListItem"),
                    Selected = this.PlayerId == playerItem.ID.ToShortID(),
                    Header   = playerItem.DisplayName,
                    Value    = playerItem.ID.ToShortID().ToString()
                });
            }
            Context.ClientPage.ClientResponse.Refresh(this.PlayersList);
        }
        protected override List <ID> GetReference(PlayList entity, Item accountItem)
        {
            if (entity.PlayListSearch == null || entity.PlayListSearch.FilterTags == null || entity.PlayListSearch.FilterTags.Count == 0)
            {
                return(new List <ID>(0));
            }
            Expression <Func <TagSearchResult, bool> > ancestorFilter = ContentSearchUtil.GetAncestorFilter <TagSearchResult>(accountItem, TemplateIDs.Tag);
            Expression <Func <TagSearchResult, bool> > second         = Enumerable.Aggregate <string, Expression <Func <TagSearchResult, bool> > >((IEnumerable <string>)entity.PlayListSearch.FilterTags, PredicateBuilder.False <TagSearchResult>(), (Func <Expression <Func <TagSearchResult, bool> >, string, Expression <Func <TagSearchResult, bool> > >)((current, tmp) => PredicateBuilder.Or <TagSearchResult>(current, (Expression <Func <TagSearchResult, bool> >)(i => i.TagName == tmp))));
            List <TagSearchResult> all = ContentSearchUtil.FindAll <TagSearchResult>(Configuration.Settings.IndexName, PredicateBuilder.And <TagSearchResult>(ancestorFilter, second));

            if (all.Count < entity.PlayListSearch.FilterTags.Count)
            {
                IItemSynchronizer itemSynchronizer = MediaFrameworkContext.GetItemSynchronizer(typeof(Entities.Tag));
                if (itemSynchronizer != null)
                {
                    foreach (string str in entity.PlayListSearch.FilterTags)
                    {
                        string tagName = str;
                        if (!Enumerable.Any <TagSearchResult>((IEnumerable <TagSearchResult>)all, (Func <TagSearchResult, bool>)(i => i.Name == tagName)))
                        {
                            TagSearchResult tagSearchResult = itemSynchronizer.Fallback((object)new Entities.Tag()
                            {
                                Name = tagName
                            }, accountItem) as TagSearchResult;
                            if (tagSearchResult != null)
                            {
                                all.Add(tagSearchResult);
                            }
                        }
                    }
                }
            }
            return(Enumerable.ToList <ID>(Enumerable.Select <TagSearchResult, ID>((IEnumerable <TagSearchResult>)all, (Func <TagSearchResult, ID>)(i => i.ItemId))));
        }
Esempio n. 10
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>
        /// Updates a player.
        /// </summary>
        /// <param name="operation">
        /// The operation.
        /// </param>
        /// <returns>
        /// The <see cref="object"/>.
        /// </returns>
        protected override object Update(ExportOperation operation)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item);

            if (synchronizer == null)
            {
                return(null);
            }

            var authenticator = new OoyalaAthenticator(operation.AccountItem);
            var context       = new RestContext(Constants.SitecoreRestSharpService, authenticator);

            var player = (Player)synchronizer.CreateEntity(operation.Item);

            string playerId = player.Id;

            player.Id = null;

            return(context.Update <Player, Player>(
                       "update_player",
                       player,
                       new List <Parameter>
            {
                new Parameter
                {
                    Type = ParameterType.UrlSegment,
                    Name = "id",
                    Value = playerId
                }
            }).Data);
        }
 protected virtual List <PageEventData> GetPageEvents(VisitData visit)
 {
     return(new List <PageEventData>(
                visit.Pages
                .Where(page => page.PageEvents != null)
                .SelectMany(page => page.PageEvents)
                .Where(pageEvent => MediaFrameworkContext.IsMediaEvent(pageEvent.PageEventDefinitionId))));
 }
        protected override object Create(ExportOperation operation)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item);

            if (synchronizer == null)
            {
                return(null);
            }

            var playlist = (PlayList)synchronizer.CreateEntity(operation.Item);

            playlist.Id           = null;
            playlist.ReferenceId  = null;
            playlist.ThumbnailUrl = null;

            //Video ids used only for EXPLICIT playlist.
            //In other case will be used filter tags & tag inclusion
            if (playlist.PlaylistType == PlaylistType.EXPLICIT.ToString())
            {
                playlist.FilterTags   = null;
                playlist.TagInclusion = null;
            }
            else
            {
                playlist.VideoIds = null;
            }

            var authenticator = new BrightcoveAthenticator(operation.AccountItem);

            var updateData = new PostData("create_playlist", authenticator, "playlist", playlist);

            var context = new RestContext(Constants.SitecoreRestSharpService, authenticator);

            var data = context.Create <PostData, ResultData <string> >("update_data", updateData).Data;


            if (data != null && !string.IsNullOrEmpty(data.Result))
            {
                //we could not to use existing playlist object because it does not contain all data
                var playlistData = context.Read <PlayList>("read_playlist_by_id",
                                                           new List <Parameter>
                {
                    new Parameter {
                        Type = ParameterType.UrlSegment, Name = "playlist_id", Value = data.Result
                    }
                }).Data;

                if (playlistData == null)
                {
                    playlist.Id = data.Result;
                    return(playlist);
                }

                return(playlistData);
            }

            return(null);
        }
        public void MigrateItem(Item item)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(item);

            if (synchronizer != null)
            {
                this.Helper.RecreateItem(item, true);
            }
        }
Esempio n. 15
0
        public virtual void Execute()
        {
            IUploadExecuter executer = MediaFrameworkContext.GetUploadExecuter(ID.Parse(this.properties[Constants.Upload.AccountTemplateId]));

            if (executer != null)
            {
                executer.Upload(this.properties, this.bytes);
            }
        }
        public virtual IItemSynchronizer GetItemSynchronizer(Item mediaItem)
        {
            Assert.ArgumentNotNull(mediaItem, "mediaItem");

            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(mediaItem);

            if (synchronizer == null)
            {
                LogHelper.Warn("Item synchronizer could not be resolved. MediaItem:" + mediaItem.Uri, this);
            }
            return(synchronizer);
        }
        public virtual IPlayerMarkupGenerator GetPlayerMarkupGenerator(Item mediaItem)
        {
            Assert.ArgumentNotNull(mediaItem, "mediaItem");

            IPlayerMarkupGenerator generator = MediaFrameworkContext.GetPlayerMarkupGenerator(mediaItem);

            if (generator == null)
            {
                LogHelper.Warn("Player markup generator could not be resolved. MediaItem:" + mediaItem.Uri, this);
            }
            return(generator);
        }
        /// <summary>
        /// Ingests items
        /// </summary>
        /// <param name="args">
        /// The args.
        /// </param>
        public override void Process(MediaCleanupItemArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.Item, "args.Item");

            ICleanupLinksExecuter executer = MediaFrameworkContext.GetCleanupLinksExecuter(args.Item);

            if (executer != null)
            {
                executer.CleanupLinks(args.Item);
            }
        }
Esempio n. 19
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);
        }
Esempio n. 20
0
        public virtual ScopeExecuteConfiguration GetExecuteConfiguration(string name)
        {
            Assert.ArgumentNotNullOrEmpty(name, "name");

            ScopeExecuteConfiguration result = MediaFrameworkContext.GetScopeExecuteConfiguration(name);

            if (result == null)
            {
                LogHelper.Warn("Execute configuration could not be resolved. Name:" + name, this);
            }

            return(result);
        }
Esempio n. 21
0
        public void Process(GetContentEditorWarningsArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            if (args.Item != null)
            {
                IExportExecuter exportExecuter = MediaFrameworkContext.GetExportExecuter(args.Item);
                if (exportExecuter != null && exportExecuter.IsNew(args.Item))
                {
                    args.Add(Translate.Text(Translations.NotExportedWarningTitle), Translate.Text(Translations.NotExportedWarningText));
                }
            }
        }
        protected override List <ID> GetReference(Channel entity, Item accountItem)
        {
            var parameters = new List <Parameter> {
                new Parameter()
                {
                    Name = "embedcode", Type = ParameterType.UrlSegment, Value = entity.EmbedCode
                }
            };

            var           context    = new RestContext(Constants.SitecoreRestSharpService, new OoyalaAthenticator(accountItem));
            List <string> embedCodes = context.Read <List <string> >("read_channel_lineup", parameters).Data;

            if (embedCodes == null)
            {
                return(null);
            }

            Expression <Func <VideoSearchResult, bool> > expression = ContentSearchUtil.GetAncestorFilter <VideoSearchResult>(accountItem, TemplateIDs.Video);

            var embedCodesExp = embedCodes.Aggregate(PredicateBuilder.False <VideoSearchResult>(), (current, tmp) => current.Or(i => i.EmbedCode == tmp.Replace('-', ' ')));

            List <VideoSearchResult> searchResults = ContentSearchUtil.FindAll(Constants.IndexName, expression.And(embedCodesExp));

            //fallback
            if (searchResults.Count < embedCodes.Count)
            {
                IItemSynchronizer synchronizer = MediaFrameworkContext.GetItemSynchronizer(typeof(Video));
                if (synchronizer != null)
                {
                    foreach (string embedCode in embedCodes)
                    {
                        if (searchResults.Any(i => i.EmbedCode == embedCode))
                        {
                            continue;
                        }

                        Video video = new Video {
                            EmbedCode = embedCode
                        };
                        var videoIndex = synchronizer.Fallback(video, accountItem) as VideoSearchResult;

                        if (videoIndex != null)
                        {
                            searchResults.Add(videoIndex);
                        }
                    }
                }
            }

            return(searchResults.Select(i => i.ItemId).ToList());
        }
Esempio n. 23
0
        public void Process(ClientPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.Parameters, "args.Parameters");

            if (args.Parameters["copy"] == "1" || !MediaFrameworkContext.IsExportAllowed(args.Parameters["database"]))
            {
                return;
            }

            Item item = this.GetItem(args);

            item.ExportMove();
        }
        public static bool ExportDelete(this Item item)
        {
            if (item == null)
            {
                return(false);
            }

            IExportExecuter executer = MediaFrameworkContext.GetExportExecuter(item);

            if (executer != null && !executer.IsNew(item))
            {
                ExportQueueManager.Add(new ExportOperation(item, ExportOperationType.Delete));
                return(true);
            }
            return(false);
        }
        public static bool ExportUpdate(this Item item, SaveArgs.SaveItem saveItem = null)
        {
            if (item == null)
            {
                return(false);
            }

            IExportExecuter executer = MediaFrameworkContext.GetExportExecuter(item);

            if (executer != null && !item.ExportCreate() && (saveItem == null || executer.NeedToUpdate(saveItem)))
            {
                ExportQueueManager.Add(new ExportOperation(item, ExportOperationType.Update));
                return(true);
            }
            return(false);
        }
        public static bool ExportCreate(this Item item)
        {
            if (item == null)
            {
                return(false);
            }

            IExportExecuter executer = MediaFrameworkContext.GetExportExecuter(item);

            if (executer != null && executer.IsNew(item))
            {
                executer.Export(new ExportOperation(item, ExportOperationType.Create));
                return(true);
            }

            return(false);
        }
        /// <summary>
        /// Update
        /// </summary>
        /// <param name="operation"></param>
        /// <returns></returns>
        protected override object Update(ExportOperation operation)
        {
            var synchronizer = MediaFrameworkContext.GetItemSynchronizer(operation.Item);

            if (synchronizer == null)
            {
                return(null);
            }

            var video = (Video)synchronizer.CreateEntity(operation.Item);

            video.ThumbnailUrl      = null;
            video.CreationDate      = null;
            video.VideoStillURL     = null;
            video.PublishedDate     = null;
            video.PlaysTrailingWeek = null;
            video.PlaysTotal        = null;
            video.LastModifiedDate  = null;
            video.Length            = null;

            if (video.CustomFields != null && video.CustomFields.Count == 0)
            {
                video.CustomFields = null;
            }

            var authenticator = new BrightcoveAthenticator(operation.AccountItem);

            var context = new RestContext(Constants.SitecoreRestSharpService, authenticator);

            var updateData = new PostData("update_video", authenticator, "video", video);

            var data = context.Update <PostData, ResultData <Video> >("update_data", updateData).Data;

            if (data != null && data.Result != null)
            {
                if (data.Result.CustomFields == null)
                {
                    data.Result.CustomFields = video.CustomFields;
                }

                return(data.Result);
            }

            return(null);
        }
Esempio n. 28
0
        protected override List <ID> GetReference(Asset entity, Item accountItem)
        {
            List <Label> labels = this.GetLabels(entity, accountItem);

            if (labels == null)
            {
                return(null);
            }

            if (labels.Count == 0)
            {
                return(new List <ID>(0));
            }

            string[] labelIds = labels.Select(i => i.Id).ToArray();

            var expression = ContentSearchUtil.GetAncestorFilter <LabelSearchResult>(accountItem, TemplateIDs.Label);
            var idExp      = labelIds.Aggregate(PredicateBuilder.False <LabelSearchResult>(), (current, tmp) => current.Or(i => i.Id == tmp));

            List <LabelSearchResult> searchResults = ContentSearchUtil.FindAll(Constants.IndexName, expression.And(idExp));

            //fallback
            if (searchResults.Count < labelIds.Length)
            {
                IItemSynchronizer synchronizer = MediaFrameworkContext.GetItemSynchronizer(typeof(Label));
                if (synchronizer != null)
                {
                    foreach (Label label in labels)
                    {
                        if (searchResults.Any(i => i.Id == label.Id))
                        {
                            continue;
                        }

                        var labelIndex = synchronizer.Fallback(label, accountItem) as LabelSearchResult;
                        if (labelIndex != null)
                        {
                            searchResults.Add(labelIndex);
                        }
                    }
                }
            }

            return(searchResults.Select(i => i.ItemId).ToList());
        }
Esempio n. 29
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);
        }
        /// <summary>
        /// Processes determining the event trigger.
        /// </summary>
        /// <param name="args">
        /// The args.
        /// </param>
        public override void Process(PlayerEventArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(args.Properties, "args.Parameters");

            IEventTrigger trigger = MediaFrameworkContext.GetEventTrigger(args.Properties.Template);

            if (trigger != null)
            {
                args.Trigger = trigger;
            }
            else
            {
                LogHelper.Warn("Player event trigger couldn't be determine for the player.", this);

                args.AbortPipeline();
            }
        }