public ActivateAdUnitEventArgs(ICreativeSource creativeSource, IVpaid player, object creativeConcept, IAdSource adSource, IEnumerable <ICompanionSource> companions, CompanionAdsRequired suggestedCompanionRules)
 {
     Player                  = player;
     AdSource                = adSource;
     CreativeConcept         = creativeConcept;
     CreativeSource          = creativeSource;
     Companions              = companions;
     SuggestedCompanionRules = suggestedCompanionRules;
 }
        void LoadAdUnit(ActiveAdUnit newAdUnit, ICollection <ICreative> creativeSet)
        {
            // load companions
            CompanionAdsRequired           required         = CompanionAdsRequired.None;
            IEnumerable <ICompanionSource> companionsToLoad = Enumerable.Empty <ICompanionSource>();
            var companions = creativeSet.OfType <CreativeCompanions>().FirstOrDefault();

            if (companions != null)
            {
                companionsToLoad = companions.Companions.Cast <ICompanionSource>();
                required         = companions.Required;
            }
            else
            {
                // VPAID 2.0 supports companions that come from the VPAID player.
                // these are only to be used with the VAST file contains none.
                if (newAdUnit.Player is IVpaid2)
                {
                    var companionData = ((IVpaid2)newAdUnit.Player).AdCompanions;
                    if (!string.IsNullOrEmpty(companionData))
                    {
                        CreativeCompanions vpaidCompanions;
                        using (var stream = companionData.ToStream())
                        {
                            vpaidCompanions = AdModelFactory.CreateCompanionsFromVast(stream);
                        }
                        companionsToLoad = vpaidCompanions.Companions.Cast <ICompanionSource>();
                        required         = vpaidCompanions.Required;
                    }
                }
            }

            try
            {
                OnActivateAd(newAdUnit, companionsToLoad, required);
            }
            catch (Exception ex)
            {
                throw new LoadException(ex);
            }
        }
 public ActivateAdUnitEventArgs(ICreativeSource creativeSource, IVpaid player, object creativeConcept, IAdSource adSource, IEnumerable<ICompanionSource> companions, CompanionAdsRequired suggestedCompanionRules)
 {
     Player = player;
     AdSource = adSource;
     CreativeConcept = creativeConcept;
     CreativeSource = creativeSource;
     Companions = companions;
     SuggestedCompanionRules = suggestedCompanionRules;
 }
示例#4
0
        /// <summary>
        /// Called to help load companion ads.
        /// </summary>
        /// <param name="companions">The companion ads that should show.</param>
        /// <param name="suggestedCompanionRules">The suggested rules for how to show companions.</param>
        /// <param name="creativeSource">The creative source associated with the companions.</param>
        /// <param name="adPlayer">The VPAID ad player associated with the companions.</param>
        /// <param name="creativeConcept">The creative concept for the companions. Can help provide info to assist with companion life cycle business logic.</param>
        /// <param name="adSource">The ad source from which the companion ads came.</param>
        protected virtual void LoadCompanions(IEnumerable <ICompanionSource> companions, CompanionAdsRequired suggestedCompanionRules, ICreativeSource creativeSource, IVpaid adPlayer, object creativeConcept, IAdSource adSource)
        {
            if (previouscreativeConcept != null && creativeConcept != previouscreativeConcept)
            {
                // remove all old companions
                UnloadCompanions();
            }

            int failureCount = 0;
            int total        = 0;

            companionUnloadActions.Clear();
            try
            {
                if (companions != null)
                {
                    foreach (var companion in companions)
                    {
                        Action undoAction;
                        if (!TryLoadCompanion(companion, out undoAction))
                        {
                            failureCount++;
                        }
                        else
                        {
                            companionUnloadActions.Add(undoAction);
                        }
                        total++;
                    }
                }

                if (suggestedCompanionRules == CompanionAdsRequired.Any && total > 0 && failureCount == total)
                {
                    throw new Exception("All companion ads failed");
                }
                if (suggestedCompanionRules == CompanionAdsRequired.All && failureCount > 0)
                {
                    throw new Exception("Not all companion ads succeeded");
                }

                previouscreativeConcept = creativeConcept;
            }
            catch
            {
                UnloadCompanions();
                throw;
            }
        }
 void OnActivateAd(ActiveAdUnit activeAdUnit, IEnumerable<ICompanionSource> companions, CompanionAdsRequired suggestedCompanionRules)
 {
     if (ActivateAdUnit != null) ActivateAdUnit(this, new ActivateAdUnitEventArgs(activeAdUnit.CreativeSource, activeAdUnit.Player, activeAdUnit.CreativeConcept, activeAdUnit.AdSource, companions, suggestedCompanionRules));
 }
        /// <summary>
        /// Called to help load companion ads.
        /// </summary>
        /// <param name="companions">The companion ads that should show.</param>
        /// <param name="suggestedCompanionRules">The suggested rules for how to show companions.</param>
        /// <param name="creativeSource">The creative source associated with the companions.</param>
        /// <param name="adPlayer">The VPAID ad player associated with the companions.</param>
        /// <param name="creativeConcept">The creative concept for the companions. Can help provide info to assist with companion life cycle business logic.</param>
        /// <param name="adSource">The ad source from which the companion ads came.</param>
        protected virtual void LoadCompanions(IEnumerable<ICompanionSource> companions, CompanionAdsRequired suggestedCompanionRules, ICreativeSource creativeSource, IVpaid adPlayer, object creativeConcept, IAdSource adSource)
        {
            if (previouscreativeConcept != null && creativeConcept != previouscreativeConcept)
            {
                // remove all old companions
                UnloadCompanions();
            }

            int failureCount = 0;
            int total = 0;

            companionUnloadActions.Clear();
            try
            {
                if (companions != null)
                {
                    foreach (var companion in companions)
                    {
                        Action undoAction;
                        if (!TryLoadCompanion(companion, out undoAction))
                        {
                            failureCount++;
                        }
                        else
                        {
                            companionUnloadActions.Add(undoAction);
                        }
                        total++;
                    }
                }

                if (suggestedCompanionRules == CompanionAdsRequired.Any && total > 0 && failureCount == total) throw new Exception("All companion ads failed");
                if (suggestedCompanionRules == CompanionAdsRequired.All && failureCount > 0) throw new Exception("Not all companion ads succeeded");

                previouscreativeConcept = creativeConcept;
            }
            catch
            {
                UnloadCompanions();
                throw;
            }
        }
 void OnActivateAd(ActiveAdUnit activeAdUnit, IEnumerable <ICompanionSource> companions, CompanionAdsRequired suggestedCompanionRules)
 {
     if (ActivateAdUnit != null)
     {
         ActivateAdUnit(this, new ActivateAdUnitEventArgs(activeAdUnit.CreativeSource, activeAdUnit.Player, activeAdUnit.CreativeConcept, activeAdUnit.AdSource, companions, suggestedCompanionRules));
     }
 }