public string Build(FeedData dataFeed, Uri baseUri) { var feed = new SyndicationFeed { Id = dataFeed.Id.ToString(), LastUpdatedTime = dataFeed.DateCreated, Items = dataFeed.Messages.Select(x => new SyndicationItem { Content = new RawSyndicationContent(x.Body), Id = x.Id.ToString(), LastUpdatedTime = x.CreatedAt }) }; if (!string.IsNullOrEmpty(dataFeed.NextUri)) feed.Links.Add(new SyndicationLink(new Uri(baseUri, dataFeed.NextUri), NextInArchiveRelationshipType, "Next In Archive", ContentType, 0)); if (!string.IsNullOrEmpty(dataFeed.PreviousUri)) feed.Links.Add(new SyndicationLink(new Uri(baseUri, dataFeed.PreviousUri), PrevInArchiveRelationshipType, "Previous In Archive", ContentType, 0)); var formatter = new Atom10FeedFormatter(feed); var sw = new StringWriter(); using (var writer = XmlWriter.Create(sw)) { formatter.WriteTo(writer); } return sw.ToString(); }
public void SingleFeedChain() { var feed1 = new FeedData() { }; environment.Setup(m => m.DownloadString("https://feeds.sample.com/")).Returns("<feed>1</feed>"); syndication.Setup(m => m.Build("<feed>1</feed>", "https://feeds.sample.com/")).Returns(feed1); var target = new FeedChain("https://feeds.sample.com/", syndication.Object); var results = target.ToArray(); Assert.AreEqual(1, results.Length); Assert.AreSame(feed1, results[0]); }
public void ThreeFeedsInChain() { var feed1 = new FeedData() { PreviousUri = "https://feeds.sample.com/2" }; environment.Setup(m => m.DownloadString("https://feeds.sample.com/")).Returns("<feed>1</feed>"); syndication.Setup(m => m.Build("<feed>1</feed>", "https://feeds.sample.com/")).Returns(feed1); var feed2 = new FeedData() { PreviousUri = "https://feeds.sample.com/3" }; environment.Setup(m => m.DownloadString("https://feeds.sample.com/2")).Returns("<feed>2</feed>"); syndication.Setup(m => m.Build("<feed>2</feed>", "https://feeds.sample.com/2")).Returns(feed2); var feed3 = new FeedData() { }; environment.Setup(m => m.DownloadString("https://feeds.sample.com/3")).Returns("<feed>3</feed>"); syndication.Setup(m => m.Build("<feed>3</feed>", "https://feeds.sample.com/3")).Returns(feed3); var target = new FeedChain("https://feeds.sample.com/", syndication.Object); var results = target.ToArray(); Assert.AreEqual(3, results.Length); Assert.AreSame(feed1, results[0]); Assert.AreSame(feed2, results[1]); Assert.AreSame(feed3, results[2]); }
public void GettingArchiveFeed() { var feedData = new FeedData(); persistance.Setup(x => x.GetMessages("/2016/01/26")).Returns(feedData); syndication.Setup(x => x.Build(feedData, new Uri("https://feed.sample.com/"))).Returns("<feed />"); var result = target.GetArchiveFeed("/2016/01/26", new Uri("https://feed.sample.com/")); Assert.AreEqual(result, "<feed />"); }