public IVpaid GetVpaidPlayer(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            if (!(AdTarget is HtmlElementAdTarget))
                throw new ArgumentException("Target must be of type HtmlElementAdTarget");

            return new HtmlAdPlayer(AdSource, AdTarget as HtmlElementAdTarget);
        }
 public DeactivateAdUnitEventArgs(ICreativeSource creativeSource, IVpaid player, object creativeConcept, IAdSource adSource)
 {
     Player          = player;
     CreativeSource  = creativeSource;
     CreativeConcept = creativeConcept;
     AdSource        = adSource;
 }
 internal ActiveAdUnit(ICreativeSource creativeSource, IVpaid player, object creativeConcept, IAdSource adSource)
 {
     CreativeSource  = creativeSource;
     Player          = player;
     CreativeConcept = creativeConcept;
     AdSource        = adSource;
 }
 public PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
 {
     if (!(AdTarget is HtmlElementAdTarget)) 
         return PriorityCriteriaEnum.NotSupported;
     else
         return PriorityCriteriaEnum.Static;
 }
        /// <summary>
        /// Finds and creates a target from an ad sequencing source and a creative source.
        /// </summary>
        /// <param name="AdSource">Provides required target info</param>
        /// <param name="CreativeSource">Provides info about the actual creative that is to be placed.</param>
        /// <returns>And object representing the selected target of the creative</returns>
        public virtual IAdTarget FindTarget(IAdSource AdSource, ICreativeSource CreativeSource)
        {
            var target = GetAdTargets(AdSource, CreativeSource).FirstOrDefault();

            if (target == null && CreativeSource.Type != CreativeSourceType.Companion)
            {
                // assume VideoArea for linear and nonlinear ads
                target = new TargetSearchResult((IAdSequencingTarget) new VideoAreaTarget(CreativeSource), new List <IAdSequencingTarget>());
            }

            if (target != null)
            {
                var slResult = GetAdContainer(target.AdSequencingTarget);
#if !WINDOWS_PHONE && !OOB
                if (slResult == null && !Application.Current.IsRunningOutOfBrowser)
                {
                    var htmlResult = GetHtmlAdContainer(target.AdSequencingTarget);
                    if (htmlResult != null)
                    {
                        return(new HtmlElementAdTarget(htmlResult, target.AdSequencingTarget, target.DependencyTargets));
                    }
                }
                else
#endif
                {
                    return(CreateAdTarget(slResult, target.AdSequencingTarget, target.DependencyTargets));
                }
            }

            return(null);
        }
        public virtual PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            if (!IsScheduleClipEnabled) return PriorityCriteriaEnum.NotSupported;
            if (AdSource.MimeType == null) return PriorityCriteriaEnum.NotSupported;
            if (AdSource.Type != CreativeSourceType.Linear) return PriorityCriteriaEnum.NotSupported;
            if (AdTarget.TargetSource == null || AdTarget.TargetSource.Region != TargetRegions.VideoArea) return PriorityCriteriaEnum.NotSupported;
            if (!(player.ActiveMediaPlugin is IAdaptiveMediaPlugin) || !player.ActiveMediaPlugin.SupportsAdScheduling) return PriorityCriteriaEnum.NotSupported;
            #if HTTP_ONLY
            if (!AdSource.MediaSource.StartsWith("http", StringComparison.OrdinalIgnoreCase))
            {
                return PriorityCriteriaEnum.NotSupported;
            }
            #endif

            switch (AdSource.MimeType.ToLower())
            {
                case "video/mp4":
                case "video/x-ms-wmv":
                    return PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Progressive | PriorityCriteriaEnum.InPlayer;
                case "text/xml":
                    return PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Adaptive | PriorityCriteriaEnum.InPlayer;
                default:
                    return PriorityCriteriaEnum.NotSupported;
            }
        }
Beispiel #7
0
        public virtual PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
#if !WINDOWS_PHONE && !OOB
            if (AdTarget is HtmlElementAdTarget)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
#endif
            if (AdSource.MimeType == null)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }

#if HTTP_ONLY
            if (!AdSource.MediaSource.StartsWith("http", StringComparison.OrdinalIgnoreCase))
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
#endif

            switch (AdSource.MimeType.ToLower())
            {
            case "video/mp4":
            case "video/x-ms-wmv":
                return(PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Progressive);

            default:
                return(PriorityCriteriaEnum.NotSupported);
            }
        }
 internal ActiveAdUnit(ICreativeSource creativeSource, IVpaid player, object creativeConcept, IAdSource adSource)
 {
     CreativeSource = creativeSource;
     Player = player;
     CreativeConcept = creativeConcept;
     AdSource = adSource;
 }
 internal void TrackErrorUrl(string url, int errorCode, ICreativeSource creativeSource = null)
 {
     if (url != null)
     {
         TrackUrl(url.Replace(Macro_ErrorCode, errorCode.ToString()), creativeSource);
     }
 }
        public PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            if (AdSource.MimeType == null)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }

            switch (AdSource.MimeType.ToLower())
            {
            case "application/x-shockwave-flash":
                if (HtmlPage.Document.GetElementById("FlashPlayer") != null)
                {
                    return(PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Interactive);
                }
                else
                {
                    return(PriorityCriteriaEnum.NotSupported);
                }

            case "video/mp4":
            case "video/x-flv":
                if (HtmlPage.Document.GetElementById("FlashPlayer") != null)
                {
                    return(PriorityCriteriaEnum.Dynamic | (AdSource.IsStreaming ? PriorityCriteriaEnum.Adaptive : PriorityCriteriaEnum.Progressive));
                }
                else
                {
                    return(PriorityCriteriaEnum.NotSupported);
                }

            default:
                return(PriorityCriteriaEnum.NotSupported);
            }
        }
 public XapAdPlayer(ICreativeSource AdSource, IAdTarget AdTarget)
 {
     this.AdSource = AdSource;
     this.Dimensions = AdSource.Dimensions;
     this.ExpandedDimensions = AdSource.ExpandedDimensions;
     this.Scalable = AdSource.IsScalable;
     this.Linear = (AdSource.Type == CreativeSourceType.Linear);
 }
Beispiel #12
0
 public XapAdPlayer(ICreativeSource AdSource, IAdTarget AdTarget)
 {
     this.AdSource           = AdSource;
     this.Dimensions         = AdSource.Dimensions;
     this.ExpandedDimensions = AdSource.ExpandedDimensions;
     this.Scalable           = AdSource.IsScalable;
     this.Linear             = (AdSource.Type == CreativeSourceType.Linear);
 }
        public IVpaid GetVpaidPlayer(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            if (!(AdTarget is HtmlElementAdTarget))
            {
                throw new ArgumentException("Target must be of type HtmlElementAdTarget");
            }

            return(new HtmlAdPlayer(AdSource, AdTarget as HtmlElementAdTarget));
        }
 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;
 }
 public override PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
 {
     var result = base.CheckSupport(AdSource, AdTarget);
     if (result != PriorityCriteriaEnum.NotSupported)
     {
         result = result | PriorityCriteriaEnum.Trump;    // adding Trump to boost priority over the base class
     }
     return result;
 }
        IVpaid OnLoadPlayer(ICreativeSource creativeSource)
        {
            var args = new LoadPlayerEventArgs(creativeSource);

            if (LoadPlayer != null)
            {
                LoadPlayer(this, args);
            }
            return(args.Player);
        }
 public PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
 {
     if (!(AdTarget is HtmlElementAdTarget))
     {
         return(PriorityCriteriaEnum.NotSupported);
     }
     else
     {
         return(PriorityCriteriaEnum.Static);
     }
 }
 public AdaptiveVideoAdPlayer(ICreativeSource AdSource, IAdTarget AdTarget, IMediaPlugin ActiveMediaPlugin)
     : base(AdSource.Dimensions, AdSource.IsScalable, AdSource.Type == CreativeSourceType.Linear)
 {
     this.ActiveMediaPlugin = ActiveMediaPlugin;
     this.AdSource = AdSource;
     this.AdTarget = AdTarget;
     if (AdSource.ClickUrl != null)
     {
         this.NavigateUri = new Uri(AdSource.ClickUrl, UriKind.RelativeOrAbsolute);
     }
 }
        /// <inheritdoc /> 
        public IVpaid GetPlayer(ICreativeSource creativeSource)
        {
            if (!IsEnabled || creativeSource.MimeType == null) return null;
            var skippableOffset = creativeSource.SkippableOffset ?? SkippableOffset;
            if (creativeSource.Type == CreativeSourceType.Linear)
            {
                if (creativeSource.ApiFramework == "VPAID")
                {
                    //switch (creativeSource.MimeType)
                    //{
                    //    case "application/x-javascript":
                    //        return new VpaidJavaScriptAdPlayer(skippableOffset, creativeSource.Duration, creativeSource.ClickUrl) { Style = VpaidWebAdPlayerStyle };
                    //}
                }
                else
                {
#if SILVERLIGHT
                    if (SupportedVideoMimeTypes.Contains(creativeSource.MimeType.ToLowerInvariant()))
#else
                    if (SupportedVideoMimeTypes.Contains(creativeSource.MimeType.ToLowerInvariant()) || CanPlayCodec(creativeSource.Codec))
#endif
                    {
                        return new VpaidVideoAdPlayer(skippableOffset, creativeSource.Duration, creativeSource.ClickUrl) 
                        { 
                            Style = VpaidVideoAdPlayerStyle,
#if NETFX_CORE
                            AudioCategory = MediaPlayer.AudioCategory
#endif
                        };
                    }
                }
            }
            else if (creativeSource.Type == CreativeSourceType.NonLinear)
            {
                switch (creativeSource.MediaSourceType)
                {
                    case MediaSourceEnum.Static:
#if SILVERLIGHT
                        if (creativeSource.MimeType.ToLowerInvariant().StartsWith("image/"))
#else
                        if (BitmapDecoder.GetDecoderInformationEnumerator().SelectMany(d => d.MimeTypes).Select(m => m.ToLowerInvariant()).Contains(creativeSource.MimeType.ToLowerInvariant()))
#endif
                        {
                            return new VpaidImageAdPlayer(skippableOffset, creativeSource.Duration, creativeSource.ClickUrl) { Style = VpaidImageAdPlayerStyle };
                        }
                        else return null;
                    case MediaSourceEnum.IFrame:
                        return new VpaidIFrameAdPlayer(skippableOffset, creativeSource.Duration, creativeSource.ClickUrl, creativeSource.Dimensions) { Style = VpaidWebAdPlayerStyle };
                    case MediaSourceEnum.HTML:
                        return new VpaidHtmlAdPlayer(skippableOffset, creativeSource.Duration, creativeSource.ClickUrl, creativeSource.Dimensions) { Style = VpaidWebAdPlayerStyle };
                }
            }
            return null;
        }
 public ProgressiveVideoAdPlayer(ICreativeSource AdSource, IAdTarget AdTarget, IMediaPlugin ActiveMediaPlugin)
     : base(AdSource.Dimensions, AdSource.IsScalable, AdSource.Type == CreativeSourceType.Linear)
 {
     this.ActiveMediaPlugin = ActiveMediaPlugin;
     this.AdSource          = AdSource;
     this.AdTarget          = AdTarget;
     if (AdSource.ClickUrl != null)
     {
         this.NavigateUri = new Uri(AdSource.ClickUrl, UriKind.RelativeOrAbsolute);
     }
 }
 public ImageAdPlayer(ICreativeSource Source, IAdTarget Target, IMediaPlugin ActiveMediaPlugin)
     : base(Source.Dimensions, Source.IsScalable, Source.Type == CreativeSourceType.Linear)
 {
     this.ActiveMediaPlugin = ActiveMediaPlugin;
     AdTarget = Target;
     AdSource = Source;
     if (AdSource.ClickUrl != null)
     {
         this.NavigateUri = new Uri(AdSource.ClickUrl, UriKind.RelativeOrAbsolute);
     }
 }
 public ImageAdPlayer(ICreativeSource Source, IAdTarget Target, IMediaPlugin ActiveMediaPlugin)
     : base(Source.Dimensions, Source.IsScalable, Source.Type == CreativeSourceType.Linear)
 {
     this.ActiveMediaPlugin = ActiveMediaPlugin;
     AdTarget = Target;
     AdSource = Source;
     if (AdSource.ClickUrl != null)
     {
         this.NavigateUri = new Uri(AdSource.ClickUrl, UriKind.RelativeOrAbsolute);
     }
 }
 internal AdClipLinearAdPlayer(ICreativeSource AdSource, IAdTarget AdTarget, IPlayer AdHost)
     : base(AdSource.Dimensions, AdSource.IsScalable, true)
 {
     this.AdSource = AdSource;
     this.AdTarget = AdTarget;
     this.ActiveMediaPlugin = AdHost.ActiveMediaPlugin;
     this.AdHost = AdHost;
     if (AdSource.ClickUrl != null)
     {
         this.NavigateUri = new Uri(AdSource.ClickUrl, UriKind.RelativeOrAbsolute);
     }
 }
Beispiel #24
0
 internal AdClipLinearAdPlayer(ICreativeSource AdSource, IAdTarget AdTarget, IPlayer AdHost)
     : base(AdSource.Dimensions, AdSource.IsScalable, true)
 {
     this.AdSource          = AdSource;
     this.AdTarget          = AdTarget;
     this.ActiveMediaPlugin = AdHost.ActiveMediaPlugin;
     this.AdHost            = AdHost;
     if (AdSource.ClickUrl != null)
     {
         this.NavigateUri = new Uri(AdSource.ClickUrl, UriKind.RelativeOrAbsolute);
     }
 }
        public PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            if (AdTarget is HtmlElementAdTarget) return PriorityCriteriaEnum.NotSupported;
            if (AdSource.MimeType == null) return PriorityCriteriaEnum.NotSupported;

            switch (AdSource.MimeType.ToLower())
            {
                case "application/x-silverlight-app":
                    return PriorityCriteriaEnum.Interactive | PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native;
                default:
                    return PriorityCriteriaEnum.NotSupported;
            }
        }
        internal void TrackUrl(string url, ICreativeSource creativeSource = null)
        {
            if (url != null)
            {
                var resolvedUrl = GetMacroUrl(url);
                if (creativeSource != null)
                {
                    resolvedUrl = resolvedUrl.Replace(Macro_AssetUri, System.Net.WebUtility.UrlEncode(creativeSource.MediaSource));
                }

                AdTracking.Current.FireTracking(resolvedUrl);
            }
        }
Beispiel #27
0
 private void TrackEvent(ICreativeSource adSource, TrackingEventEnum eventToTrack)
 {
     try
     {
         adSource.Track(eventToTrack);
     }
     catch (Exception ex)
     {
         if (TrackingFailed != null)
         {
             TrackingFailed(this, new TrackingFailureEventArgs(eventToTrack.ToString(), ex));
         }
     }
 }
 /// <inheritdoc /> 
 protected override IVpaid GetPlayer(ICreativeSource creativeSource)
 {
     IVpaid result = null;
     // look for ad player factories in the plugin collection. Try each one until you find a player
     foreach (var factory in MediaPlayer.Plugins.OfType<IAdPlayerFactoryPlugin>())
     {
         var player = factory.GetPlayer(creativeSource);
         if (player != null)
         {
             result = player;
             break;
         }
     }
     return result;
 }
        public virtual PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
#if !WINDOWS_PHONE && !OOB
            if (AdTarget is HtmlElementAdTarget) return PriorityCriteriaEnum.NotSupported;
#endif
            if (AdSource.MimeType == null) return PriorityCriteriaEnum.NotSupported;

            switch (AdSource.MimeType.ToLower())
            {
                case "text/xml":
                    return PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Adaptive;
                default:
                    return PriorityCriteriaEnum.NotSupported;
            }
        }
Beispiel #30
0
        /// <inheritdoc />
        protected override IVpaid GetPlayer(ICreativeSource creativeSource)
        {
            IVpaid result = null;

            // look for ad player factories in the plugin collection. Try each one until you find a player
            foreach (var factory in MediaPlayer.Plugins.OfType <IAdPlayerFactoryPlugin>())
            {
                var player = factory.GetPlayer(creativeSource);
                if (player != null)
                {
                    result = player;
                    break;
                }
            }
            return(result);
        }
        public virtual PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            #if !WINDOWS_PHONE && !OOB
            if (AdTarget is HtmlElementAdTarget) return PriorityCriteriaEnum.NotSupported;
            #endif
            if (AdSource.MimeType == null) return PriorityCriteriaEnum.NotSupported;

            switch (AdSource.MimeType.ToLower())
            {
                case "image/jpg":
                case "image/jpeg":
                case "image/png":
                    return PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Static;
                default:
                    return PriorityCriteriaEnum.NotSupported;
            }
        }
        internal protected ActiveCreative GetCreative(ICreativeSource adSource, IAdTarget adTarget)
        {
            IVpaid adPlayer;
            var    vPaidFactories = GetVpaidFactories().ToList();

            do
            {
                var rankedVpaidFactories =
                    from factory in vPaidFactories
                    let rank = factory.CheckSupport(adSource, adTarget)
                               where rank > PriorityCriteriaEnum.NotSupported
                               orderby rank descending
                               select factory;

                var playerFactory = rankedVpaidFactories.FirstOrDefault();
                if (playerFactory == null)
                {
                    return(null);
                }

                adPlayer = playerFactory.GetVpaidPlayer(adSource, adTarget);

                // handshake with the ad player to make sure the version of VAST is OK
                if (adPlayer == null || !VpaidController.Handshake(adPlayer))
                {
                    // the version is no good, remove the factory from the list and try again.
                    vPaidFactories.Remove(playerFactory);
                    if (!vPaidFactories.Any())
                    {
                        return(null);
                    }
                    adPlayer = null;
                }
            } while (adPlayer == null);

            //put companion in target
            if (!adTarget.AddChild(adPlayer))
            {
                return(null);
            }

            return(new ActiveCreative(adPlayer, adSource, adTarget));
        }
        public PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            if (!IsScheduleClipEnabled)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
            if (AdSource.MimeType == null)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
            if (AdSource.Type != CreativeSourceType.Linear)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
            if (AdTarget.TargetSource == null || AdTarget.TargetSource.Region != TargetRegions.VideoArea)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
            if (!(player.ActiveMediaPlugin is IAdaptiveMediaPlugin) || !player.ActiveMediaPlugin.SupportsAdScheduling)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
#if HTTP_ONLY
            if (!AdSource.MediaSource.StartsWith("http", StringComparison.OrdinalIgnoreCase))
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
#endif

            switch (AdSource.MimeType.ToLower())
            {
            case "video/mp4":
            case "video/x-ms-wmv":
                return(PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Progressive | PriorityCriteriaEnum.InPlayer);

            case "text/xml":
                return(PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Adaptive | PriorityCriteriaEnum.InPlayer);

            default:
                return(PriorityCriteriaEnum.NotSupported);
            }
        }
        public PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            if (AdTarget is HtmlElementAdTarget)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
            if (AdSource.MimeType == null)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }

            switch (AdSource.MimeType.ToLower())
            {
            case "application/x-silverlight-app":
                return(PriorityCriteriaEnum.Interactive | PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native);

            default:
                return(PriorityCriteriaEnum.NotSupported);
            }
        }
        public virtual PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
#if !WINDOWS_PHONE && !OOB
            if (AdTarget is HtmlElementAdTarget)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
#endif
            if (AdSource.MimeType == null)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }

            switch (AdSource.MimeType.ToLower())
            {
            case "text/xml":
                return(PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Adaptive);

            default:
                return(PriorityCriteriaEnum.NotSupported);
            }
        }
        public FlashVideoAdPlayer(ICreativeSource Source, IAdTarget Target)
        {
            AdTarget = Target;
            AdSource = Source;

            this.SizeChanged += new SizeChangedEventHandler(FlashVideoAdPlayer_SizeChanged);

            StringBuilder script = new StringBuilder();

            script.Append("function flashReady(){");
            script.Append("if (adPlayer) adPlayer.OnReady();");
            script.AppendLine("}");

            script.AppendLine("var adPlayer;");
            script.Append("function setPlayer(player){");
            script.Append("adPlayer = player;");
            script.AppendLine("}");

            script.Append("function VPAIDAdLoaded(){");
            script.Append("adPlayer.OnAdLoaded();");
            script.AppendLine("}");

            script.Append("function VPAIDAdStarted(){");
            script.Append("adPlayer.OnAdStarted();");
            script.AppendLine("}");

            script.Append("function VPAIDAdStopped(){");
            script.Append("adPlayer.OnAdStopped();");
            script.AppendLine("}");

            script.Append("function VPAIDAdVideoComplete(){");
            script.Append("if (adPlayer) adPlayer.OnAdVideoComplete();");
            script.AppendLine("}");

            InjectScript(script.ToString());

            HtmlPage.Window.Invoke("setPlayer", this);
        }
        public FlashVideoAdPlayer(ICreativeSource Source, IAdTarget Target)
        {
            AdTarget = Target;
            AdSource = Source;

            this.SizeChanged += new SizeChangedEventHandler(FlashVideoAdPlayer_SizeChanged);

            StringBuilder script = new StringBuilder();

            script.Append("function flashReady(){");
            script.Append("if (adPlayer) adPlayer.OnReady();");
            script.AppendLine("}");

            script.AppendLine("var adPlayer;");
            script.Append("function setPlayer(player){");
            script.Append("adPlayer = player;");
            script.AppendLine("}");

            script.Append("function VPAIDAdLoaded(){");
            script.Append("adPlayer.OnAdLoaded();");
            script.AppendLine("}");

            script.Append("function VPAIDAdStarted(){");
            script.Append("adPlayer.OnAdStarted();");
            script.AppendLine("}");

            script.Append("function VPAIDAdStopped(){");
            script.Append("adPlayer.OnAdStopped();");
            script.AppendLine("}");

            script.Append("function VPAIDAdVideoComplete(){");
            script.Append("if (adPlayer) adPlayer.OnAdVideoComplete();");
            script.AppendLine("}");

            InjectScript(script.ToString());

            HtmlPage.Window.Invoke("setPlayer", this);
        }
        public PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            if (AdSource.MimeType == null) return PriorityCriteriaEnum.NotSupported;

            switch (AdSource.MimeType.ToLower())
            {
                case "application/x-shockwave-flash":
                    if (HtmlPage.Document.GetElementById("FlashPlayer") != null)
                        return PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Interactive;
                    else
                        return PriorityCriteriaEnum.NotSupported;
                case "video/mp4":
                case "video/x-flv":
                    if (HtmlPage.Document.GetElementById("FlashPlayer") != null)
                    {
                        return PriorityCriteriaEnum.Dynamic | (AdSource.IsStreaming ? PriorityCriteriaEnum.Adaptive : PriorityCriteriaEnum.Progressive);
                    }
                    else
                        return PriorityCriteriaEnum.NotSupported;
                default:
                    return PriorityCriteriaEnum.NotSupported;
            }
        }
        public virtual PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
            #if !WINDOWS_PHONE && !OOB
            if (AdTarget is HtmlElementAdTarget) return PriorityCriteriaEnum.NotSupported;
            #endif
            if (AdSource.MimeType == null) return PriorityCriteriaEnum.NotSupported;

            #if HTTP_ONLY
            if (!AdSource.MediaSource.StartsWith("http", StringComparison.OrdinalIgnoreCase))
            {
                return PriorityCriteriaEnum.NotSupported;
            }
            #endif

            switch (AdSource.MimeType.ToLower())
            {
                case "video/mp4":
                case "video/x-ms-wmv":
                    return PriorityCriteriaEnum.Dynamic | PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Progressive;
                default:
                    return PriorityCriteriaEnum.NotSupported;
            }
        }
        public virtual PriorityCriteriaEnum CheckSupport(ICreativeSource AdSource, IAdTarget AdTarget)
        {
#if !WINDOWS_PHONE && !OOB
            if (AdTarget is HtmlElementAdTarget)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }
#endif
            if (AdSource.MimeType == null)
            {
                return(PriorityCriteriaEnum.NotSupported);
            }

            switch (AdSource.MimeType.ToLower())
            {
            case "image/jpg":
            case "image/jpeg":
            case "image/png":
                return(PriorityCriteriaEnum.Native | PriorityCriteriaEnum.Static);

            default:
                return(PriorityCriteriaEnum.NotSupported);
            }
        }
 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;
 }
 internal CreativeEventArgs(ICreativeSource AdSource)
 {
     adSource = AdSource;
 }
 public AdTrackingEventEventArgs(ICreativeSource creativeSource, TrackingType trackingType)
 {
     CreativeSource = creativeSource;
     TrackingType   = trackingType;
 }
 public override IVpaid GetVpaidPlayer(ICreativeSource AdSource, IAdTarget AdTarget)
 {
     return new AdaptiveVideoAdPlayerXbox(AdSource, AdTarget, player as IDvrPlayer);
 }
 internal CreativeProgressEventArgs(ICreativeSource AdSource, TimeSpan TimeRemaining)
     : base(AdSource)
 {
     timeRemaining = TimeRemaining;
 }
 public AdTrackingEventEventArgs(ICreativeSource creativeSource, TrackingType trackingType)
 {
     CreativeSource = creativeSource;
     TrackingType = trackingType;
 }
 public virtual IVpaid GetVpaidPlayer(ICreativeSource AdSource, IAdTarget AdTarget)
 {
     return new AdClipLinearAdPlayer(AdSource, AdTarget, player);
 }
 public virtual IVpaid GetVpaidPlayer(ICreativeSource AdSource, IAdTarget AdTarget)
 {
     return new ProgressiveVideoAdPlayer(AdSource, AdTarget, player.ActiveMediaPlugin);
 }
 public HtmlAdPlayer(ICreativeSource Source, HtmlElementAdTarget Target)
     : base(Source.Dimensions, Source.IsScalable, Source.Type == CreativeSourceType.Linear)
 {
     AdTarget = Target;
     AdSource = Source;
 }
        /// <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;
            }
        }
 public ActiveCreative GetCompanionCreative(ICreativeSource adSource, IAdTarget adTarget)
 {
     return vastAdHandler.GetCreative(adSource, adTarget);
 }
 /// <summary>
 /// Called to retrieve a VPAID player from a creative source.
 /// </summary>
 /// <param name="creativeSource">The creative source that needs a VPAID player to play.</param>
 /// <returns>The VPAID ad player</returns>
 protected abstract IVpaid GetPlayer(ICreativeSource creativeSource);
 public ActiveCreative GetNonLinearCreative(ICreativeSource adSource, IAdTarget adTarget)
 {
     return vastAdHandler.GetCreative(adSource, adTarget);
 }
 internal CreativeProgressEventArgs(ICreativeSource AdSource, TimeSpan TimeRemaining)
     : base(AdSource)
 {
     timeRemaining = TimeRemaining;
 }
 public DeactivateAdUnitEventArgs(ICreativeSource creativeSource, IVpaid player, object creativeConcept, IAdSource adSource)
 {
     Player = player;
     CreativeSource = creativeSource;
     CreativeConcept = creativeConcept;
     AdSource = adSource;
 }
 public ActiveCreative(IVpaid Player, ICreativeSource Source, IAdTarget Target)
 {
     this.Player = Player;
     this.Source = Source;
     this.Target = Target;
 }
 public DeactivateAdUnitEventArgs(ICreativeSource creativeSource, IVpaid player, object creativeConcept, IAdSource adSource, Exception error)
     : this(creativeSource, player, creativeConcept, adSource)
 {
     Error = error;
 }
 internal CreativeEventArgs(ICreativeSource AdSource)
 {
     adSource = AdSource;
 }
 public LoadPlayerEventArgs(ICreativeSource creativeSource)
 {
     CreativeSource = creativeSource;
 }
 public virtual IVpaid GetVpaidPlayer(ICreativeSource AdSource, IAdTarget AdTarget)
 {
     return(new AdaptiveVideoAdPlayer(AdSource, AdTarget, player.ActiveMediaPlugin));
 }