/// <summary> /// Update feeds /// </summary> /// <returns>Task</returns> public async Task Update() { var client = new HttpClient(); Rss latest; using (var reader = new StringReader(await client.GetStringAsync(Endpoint))) { var desirializer = new XmlSerializer(typeof(Rss)); latest = desirializer.Deserialize(reader) as Rss; } if (latest == null || latest.Channel.LastBuildDate.CompareTo(this.Feed.Channel.LastBuildDate) <= 0) { return; } // Merge old feed items and new feed items var oldItems = (from f in this.Feed.Channel.Items where !latest.Channel.Items.Any(l => l.Equals(f.Guid)) orderby f.PubDate descending select f).ToList(); foreach (var old in oldItems) { latest.Channel.Items.Add(old); } this.Feed = latest; }
/// <summary> /// Constructor /// </summary> public NewsFeedService() { this.Feed = new Rss(); }