コード例 #1
0
ファイル: RssOpmlTest.cs プロジェクト: orf53975/Cube.Net
        public void LoadOpml_Details()
        {
            var filter = new Dictionary <Uri, RssFeed>
            {
                { new Uri("https://blogs.msdn.microsoft.com/dotnet/feed/"), new RssFeed() },
            };

            var ctx  = new SynchronizationContext();
            var dest = new RssOpml(ctx, IO).Load(GetExamplesWith("Sample.opml"), filter).ToList();

            Assert.That(dest.Count, Is.EqualTo(1));

            var root = dest[0] as RssCategory;

            Assert.That(root.Title, Is.EqualTo("Subscriptions"));
            Assert.That(root.Children.Count, Is.EqualTo(3));

            var s0 = root.Children[0] as RssEntry;

            Assert.That(s0.Parent, Is.EqualTo(root), s0.Title);
            Assert.That(s0.Title, Is.EqualTo("The GitHub Blog"));
            Assert.That(s0.Uri, Is.EqualTo(new Uri("https://github.com/blog.atom")));
            Assert.That(s0.Link, Is.EqualTo(new Uri("https://github.com/blog")));

            var s1 = root.Children[1] as RssCategory;

            Assert.That(s1.Parent, Is.EqualTo(root), s1.Title);
            Assert.That(s1.Title, Is.EqualTo("キューブ・ソフト"));
            Assert.That(s1.Children.Count, Is.EqualTo(1));

            var s10 = s1.Children[0] as RssEntry;

            Assert.That(s10.Parent, Is.EqualTo(s1), s10.Title);
            Assert.That(s10.Title, Is.EqualTo("CubeSoft Blog"));
            Assert.That(s10.Uri, Is.EqualTo(new Uri("https://blog.cube-soft.jp/?feed=rss2")));
            Assert.That(s10.Link, Is.EqualTo(new Uri("https://blog.cube-soft.jp/")));

            var s2 = root.Children[2] as RssCategory;

            Assert.That(s2.Parent, Is.EqualTo(root), s2.Title);
            Assert.That(s2.Title, Is.EqualTo("Microsoft"));
            Assert.That(s2.Children.Count, Is.EqualTo(2));

            var s20 = s2.Children[0] as RssEntry;

            Assert.That(s20.Parent, Is.EqualTo(s2), s20.Title);
            Assert.That(s20.Title, Is.EqualTo("The Official Microsoft Blog"));
            Assert.That(s20.Uri, Is.EqualTo(new Uri("https://blogs.microsoft.com/feed/")));
            Assert.That(s20.Link, Is.EqualTo(new Uri("https://blogs.microsoft.com/")));

            var s21 = s2.Children[1] as RssEntry;

            Assert.That(s21.Parent, Is.EqualTo(s2), s21.Title);
            Assert.That(s21.Title, Is.EqualTo("Windows Blog"));
            Assert.That(s21.Uri, Is.EqualTo(new Uri("https://blogs.windows.com/feed/")));
            Assert.That(s21.Link, Is.EqualTo(new Uri("https://blogs.windows.com/")));
        }
コード例 #2
0
ファイル: Opml.cs プロジェクト: walterlv/Rssman
        public static async Task <RssOpml> ParseAsync(Stream stream)
        {
            var document = await XDocument.LoadAsync(stream, LoadOptions.None, CancellationToken.None);

            var root = document.XPathSelectElement("opml");
            var opml = new RssOpml();

            opml.Deserialize(root);
            return(opml);
        }
コード例 #3
0
ファイル: RssOpmlTest.cs プロジェクト: orf53975/Cube.Net
        public int LoadOpml(string filename)
        {
            var dest = new RssOpml(new SynchronizationContext(), IO)
                       .Load(GetExamplesWith(filename), new Dictionary <Uri, RssFeed>())
                       .Flatten();

            foreach (var item in dest)
            {
                if (item is RssEntry re)
                {
                    Assert.That(re.Uri, Is.Not.Null);
                    Assert.That(re.Link, Is.Not.Null, re.Uri.ToString());
                    Assert.That(re.Title, Is.Not.Null.And.Not.Empty, re.Uri.ToString());
                }
                else
                {
                    Assert.That((item as RssCategory).Title, Is.Not.Null.And.Not.Empty);
                }
            }

            return(dest.Count());
        }
コード例 #4
0
ファイル: RssOpmlTest.cs プロジェクト: nagris-n/Cube.Net
        public int LoadOpml(string filename)
        {
            var dest = new RssOpml(Invoker.Vanilla, IO)
                       .Load(GetSource(filename), new Dictionary <Uri, RssFeed>())
                       .Flatten();

            foreach (var item in dest)
            {
                if (item is RssEntry re)
                {
                    Assert.That(re.Uri, Is.Not.Null);
                    Assert.That(re.Link, Is.Not.Null, re.Uri.ToString());
                    Assert.That(re.Title, Is.Not.Null.And.Not.Empty, re.Uri.ToString());
                }
                else
                {
                    Assert.That((item as RssCategory).Title, Is.Not.Null.And.Not.Empty);
                }
            }

            return(dest.Count());
        }
コード例 #5
0
ファイル: Opml.cs プロジェクト: walterlv/Rssman
        public static IEnumerable <RssOutline> GetOutlines(this RssOpml opml)
        {
            return(Enumerate(opml.Children));

            IEnumerable <RssOutline> Enumerate(IEnumerable <RssOutline> source)
            {
                foreach (var child in source)
                {
                    if (child.HasChildren)
                    {
                        foreach (var grandChild in Enumerate(child.Children))
                        {
                            yield return(grandChild);
                        }
                    }
                    else if (!string.IsNullOrWhiteSpace(child.XmlUrl))
                    {
                        yield return(child);
                    }
                }
            }
        }