Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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]);
        }
Ejemplo n.º 3
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]);
        }
Ejemplo n.º 4
0
        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 />");
        }