private int GetRssFeedItems(RssFeed feed, Subscription subscription) { var itemsAdded = 0; foreach (var rssItem in feed.Channel.Items.Where(x => subscription.LastFeedUpdatesUTC == null || x.PublicationDate.ToUniversalTime() > subscription.LastFeedUpdatesUTC)) { var categories = rssItem.Categories.Aggregate(String.Empty, (current, category) => current + (category.Value + ",")).TrimEnd(','); var subscriptionPost = new SubscriptionPost { Categories = categories, OriginalUrl = rssItem.Link.ToString(), PublishDateUTC = GetGoodDateTime(rssItem.PublicationDate.ToUniversalTime()), Subscription = subscription, Title = rssItem.Title, Content = GetRssContent(rssItem), Authors = GetRssAuthors(rssItem) }; itemsAdded++; _dbContext.SubscriptionPosts.Add(subscriptionPost); subscription.SubscriptionPosts.Add(subscriptionPost); } return itemsAdded; }
private int GetAtomFeedItems(AtomFeed feed, Subscription subscription) { var itemsAdded = 0; foreach (var entry in feed.Entries.Where(x => subscription.LastFeedUpdatesUTC == null || x.PublishedOn.ToUniversalTime() > subscription.LastFeedUpdatesUTC)) { var categories = entry.Categories.Aggregate(String.Empty, (current, category) => current + (category.Label + ",")).TrimEnd(','); var authors = entry.Authors.Aggregate(String.Empty, (current, author) => current + (author.Name + ",")).TrimEnd(','); var subscriptionPost = new SubscriptionPost { Authors = authors, Categories = categories, Content = entry.Content != null ? entry.Content.Content : (entry.Summary != null) ? entry.Summary.Content : String.Empty, OriginalUrl = GetOriginalUrl(entry), PublishDateUTC = GetGoodDateTime(entry.PublishedOn.ToUniversalTime()), Subscription = subscription, Title = entry.Title.Content }; itemsAdded++; _dbContext.SubscriptionPosts.Add(subscriptionPost); subscription.SubscriptionPosts.Add(subscriptionPost); } return itemsAdded; }