private static MediaFile CreateMediaFile(FWCreative creative, FWCreativeRendition rendition, FWAsset asset) { Uri uri; if (Uri.TryCreate(asset.Url, UriKind.RelativeOrAbsolute, out uri)) { var mediaFile = new MediaFile(); mediaFile.Value = uri; mediaFile.Width = rendition.Width; mediaFile.Height = rendition.Height; mediaFile.Codec = rendition.ContentType ?? asset.ContentType; mediaFile.Type = asset.MimeType; mediaFile.Id = asset.Id; mediaFile.Bitrate = (long)(asset.Bytes / creative.Duration.GetValueOrDefault(TimeSpan.FromSeconds(30)).TotalSeconds / 1000 * 8); if (rendition.CreativeApi != FWCreativeApi.none) { mediaFile.ApiFramework = rendition.CreativeApi.ToString().ToUpperInvariant(); } return mediaFile; } else return null; }
internal static FWCreative LoadCreative(XElement element) { var result = new FWCreative(); result.RedirectUrl = (string)element.Attribute("redirectUrl"); result.AdUnit = (string)element.Attribute("adUnit"); result.BaseUnit = (FWBaseUnit)Enum.Parse(typeof(FWBaseUnit), ((string)element.Attribute("baseUnit")).Replace("-", "_"), true); var durationString = (string)element.Attribute("duration"); if (!string.IsNullOrEmpty(durationString)) { result.Duration = TimeSpan.FromSeconds(float.Parse(durationString)); } result.Id = (string)element.Attribute("creativeId"); var creativeRenditionsXml = element.Element("creativeRenditions"); if (creativeRenditionsXml != null) { foreach (var creativeRenditionXml in creativeRenditionsXml.Elements("creativeRendition")) { result.CreativeRenditions.Add(LoadCreativeRendition(creativeRenditionXml)); } } var parametersXml = element.Element("parameters"); if (parametersXml != null) { foreach (var parameterXml in parametersXml.Elements("parameter")) { result.Parameters.Add(LoadParameter(parameterXml)); } } return result; }