private static bool TryParseMediaRssEmbed(XElement embedElement, XNamespace ns, out MediaRssEmbed parsedEmbed) { parsedEmbed = default; if (!TryParseStringAttribute(embedElement?.Attribute("url"), out var parsedUrl)) { return(false); } parsedEmbed = new MediaRssEmbed { Url = parsedUrl, }; if (TryParseIntegerAttribute(embedElement?.Attribute("height"), out var parsedHeight)) { parsedEmbed.Height = parsedHeight; } if (TryParseIntegerAttribute(embedElement?.Attribute("width"), out var parsedWidth)) { parsedEmbed.Width = parsedWidth; } parsedEmbed.Params = (embedElement?.Elements(ns + "param") ?? Enumerable.Empty <XElement>()) .Select(x => new MediaRssEmbedParam { Value = x?.Value, Name = x?.Attribute("name")?.Value, }) .Where(x => !string.IsNullOrEmpty(x.Name) || !string.IsNullOrEmpty(x.Value)) .ToList(); return(true); }
private static bool TryFormatMediaRssEmbed(MediaRssEmbed embedToFormat, out XElement embedElement) { embedElement = default; if (string.IsNullOrEmpty(embedToFormat?.Url)) { return(false); } embedElement = new XElement(_media + "embed", new XAttribute("url", embedToFormat.Url)); if (embedToFormat.Height != null) { embedElement.Add(new XAttribute("height", embedToFormat.Height.Value.ToString(CultureInfo.InvariantCulture))); } if (embedToFormat.Width != null) { embedElement.Add(new XAttribute("width", embedToFormat.Width.Value.ToString(CultureInfo.InvariantCulture))); } foreach (var paramToFormat in embedToFormat.Params ?? Enumerable.Empty <MediaRssEmbedParam>()) { if (string.IsNullOrEmpty(paramToFormat?.Name) && string.IsNullOrEmpty(paramToFormat?.Value)) { continue; } var paramElement = new XElement(_media + "param", paramToFormat.Value ?? string.Empty); paramElement.Add(new XAttribute("name", paramToFormat.Name ?? string.Empty)); embedElement.Add(paramElement); } return(true); }