示例#1
0
        public GetRssFeedContentResponse GetRssFeedContent(GetRssFeedContentCommand command)
        {
            Guard.Against.Null(command, nameof(command));
            using var reader = XmlReader.Create(command.Url);
            var feed = SyndicationFeed.Load(reader);

            var response = SetupResponse(feed);

            foreach (var feedItem in feed.Items)
            {
                var contentItem = MakeContentItem(feedItem);
                response.ContentItems.Add(contentItem);
            }

            foreach (var contentItem in response.ContentItems)
            {
                var doc = new HtmlDocument();
                doc.LoadHtml(contentItem.SummaryText);
                var imageNodes = doc.DocumentNode.SelectNodes("//img");
                foreach (var imageNode in imageNodes)
                {
                    imageNode.ParentNode.RemoveChild(imageNode);
                }
                contentItem.SummaryTextWithNoImages = doc.DocumentNode.OuterHtml;
            }

            response.Link = command.Url;

            return(response);
        }
示例#2
0
        public void Service__RssFeedContent__MichaelHyatt()
        {
            // arrange
            var command = new GetRssFeedContentCommand
            {
                Url = "https://michaelhyatt.com/feed/"
            };

            // act
            var response = _service.GetRssFeedContent(command);

            // assert
            Assert.NotNull(response);
        }
示例#3
0
        public void Service__RssFeedContent__MichaelHyattNoImagesInSummaryText()
        {
            // arrange
            var command = new GetRssFeedContentCommand
            {
                Url = "https://michaelhyatt.com/feed/"
            };

            // act
            var response = _service.GetRssFeedContent(command);

            // assert
            foreach (var item in response.ContentItems)
            {
                Assert.IsTrue(item.SummaryTextWithNoImages.IndexOf("<img") == -1);
            }
        }
示例#4
0
        public void Service__RssFeedContent__MyBlog()
        {
            // arrange
            var command = new GetRssFeedContentCommand
            {
                Url = "http://inspiredtoeducate.net/inspiredtoeducate/feed/"
            };

            // act
            var response = _service.GetRssFeedContent(command);

            // assert
            Assert.NotNull(response);
            foreach (var item in response.ContentItems)
            {
                Assert.True(!string.IsNullOrEmpty(item.Content));
            }
        }