namespace FormulaOneApp.Rss.Readers { using System.Collections.ObjectModel; using System.Linq; using System.Xml.Linq; using Helpers; using Models; internal abstract class BaseRss : BaseReader { /// /// Return a RssFeed object using the XDocument data /// /// /// public override RssFeed LoadFeed(XDocument doc) { var feed = new RssFeed(); XNamespace defaultNamespace = string.Empty; SetMediaImage(feed, doc); if (doc.Root != null) { defaultNamespace = doc.Root.GetDefaultNamespace(); feed.Description = doc.Root.Element("channel").GetSafeElementString("description"); feed.Items = new ObservableCollection(); feed.Link = doc.Root.Element("channel").GetSafeElementString("link"); } foreach (XElement item in doc.Descendants(defaultNamespace + "item")) { RssItem rssItem = ParseItem(item); feed.Items.Add(rssItem); } RssItem lastItem = feed.Items.OrderByDescending(i => i.PublishDate).FirstOrDefault(); if (lastItem != null) feed.LastBuildDate = lastItem.PublishDate; return feed; } protected abstract RssItem ParseItem(XElement item); } }