Ejemplo n.º 1
0
        public static IEnumerable <Entity> GetEntitiesFromFeed(string urlFeedLocation)
        {
            if (String.IsNullOrEmpty(urlFeedLocation))
            {
                return(null);
            }

            using (XmlReader reader = XmlReader.Create(urlFeedLocation))
            {
                Atom10FeedFormatter atom = new Atom10FeedFormatter();
                // try to read it as an atom feed
                if (atom.CanRead(reader))
                {
                    atom.ReadFrom(reader);
                    AtomFormatter formatter = new AtomFormatter();
                    return(formatter.GetEntities(urlFeedLocation));
                }

                Rss20FeedFormatter rss = new Rss20FeedFormatter();
                // try reading it as an rss feed
                if (rss.CanRead(reader))
                {
                    rss.ReadFrom(reader);
                    RSSFormater formatter = new RSSFormater();
                    return(formatter.GetEntities(urlFeedLocation));
                }

                //add new custom formatters
            }
            return(null);
        }
Ejemplo n.º 2
0
        public void Work()
        {
            list = new List <ClassBla>();
            int           i     = 0;
            List <string> sites = new List <string> {
                "https://habr.com/rss/interesting/", "https://keddr.com/feed/"
            };

            foreach (string site in sites)
            {
                Rss20FeedFormatter feedFormatter = new Rss20FeedFormatter();
                XmlReader          rssReader     = XmlReader.Create(site);
                if (feedFormatter.CanRead(rssReader))
                {
                    feedFormatter.ReadFrom(rssReader);
                    var DataContext = feedFormatter.Feed;
                    var feedContent = feedFormatter.Feed.Items;
                    foreach (var el in feedContent)
                    {
                        ClassBla obj = new ClassBla(
                            el.PublishDate.ToString(),
                            el.Id
                            );
                        list.Add(obj);
                    }
                    rssReader.Close();
                }
                ProcessChanged(i += 50);
            }

            WorkCompleted(_cancelled);
            DataSave(true);
        }
Ejemplo n.º 3
0
    /// <summary>
    /// Default Page Load Method
    /// </summary>
    /// <param name="sender">Sender of the event.</param>
    /// <param name="e">Event Argument.</param>
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            XmlReader reader = XmlReader.Create(BlogSyndicationUrl);

            Rss20FeedFormatter rss = new Rss20FeedFormatter();

            if (reader != null)
            {
                if (rss.CanRead(reader))
                {
                    rss.ReadFrom(reader);

                    SyndicationItem item;
                    item = rss.Feed.Items.First <SyndicationItem>();
                    if (item != null)
                    {
                        this.latestBlogEntryTitle.Text    = item.Title.Text;
                        this.latestBlogEntrySummary.Text  = item.Summary.Text;
                        this.blogLink.NavigateUrl         = item.Id;
                        this.blogFullPostLink.NavigateUrl = item.Id;
                        this.latestBlogPublishTime.Text   = item.PublishDate.DateTime.ToString("dd-MMM-yyyy  HH:mm", CultureInfo.CurrentCulture) + " " + "by" + " " + item.Authors[0].Email;
                    }
                }
            }
        }
        catch (WebException)
        {
            AppSettingsReader appsReader = new AppSettingsReader();
            this.latestBlogEntrySummary.Text = appsReader.GetValue("LatestBlogAccessMessage", typeof(string)).ToString();
            this.blogFullPostLink.Visible    = false;
        }
    }
Ejemplo n.º 4
0
        public static async Task <SyndicationFeed> LoadAsync(XmlReader reader, Rss20FeedFormatter Rssformatter, Atom10FeedFormatter Atomformatter, CancellationToken ct)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            XmlReaderWrapper wrappedReader = XmlReaderWrapper.CreateFromReader(reader);

            Atom10FeedFormatter atomSerializer = Atomformatter;

            if (atomSerializer.CanRead(wrappedReader))
            {
                await atomSerializer.ReadFromAsync(wrappedReader, new CancellationToken());

                return(atomSerializer.Feed);
            }
            Rss20FeedFormatter rssSerializer = Rssformatter;

            if (rssSerializer.CanRead(wrappedReader))
            {
                await rssSerializer.ReadFromAsync(wrappedReader, new CancellationToken());

                return(rssSerializer.Feed);
            }
            throw new XmlException(string.Format(SR.UnknownFeedXml, wrappedReader.LocalName, wrappedReader.NamespaceURI));
        }
Ejemplo n.º 5
0
        private static void ValidateRSS(string content)
        {
            Rss20FeedFormatter feedFormatter = new Rss20FeedFormatter();
            XmlReader          rssReader     = XmlReader.Create(new StringReader(content));

            if (feedFormatter.CanRead(rssReader))
            {
                feedFormatter.ReadFrom(rssReader);
                rssReader.Close();
            }
        }
Ejemplo n.º 6
0
        public SyndicationFeed CanReadRss2(XmlReader xmlReader)
        {
            var rss = new Rss20FeedFormatter();

            // try reading it as an rss feed
            if (rss.CanRead(xmlReader))
            {
                rss.ReadFrom(xmlReader);

                return(rss.Feed);
            }
            return(null);
        }
Ejemplo n.º 7
0
        public static void Snippet15()
        {
            // <Snippet15>
            Rss20FeedFormatter feedFormatter = new Rss20FeedFormatter();
            XmlReader          rssReader     = XmlReader.Create("http://Contoso/Feeds/MyFeed");

            if (feedFormatter.CanRead(rssReader))
            {
                feedFormatter.ReadFrom(rssReader);
                rssReader.Close();
            }
            // </Snippet15>
        }
    public static bool Parse(string url, ref SyndicationFeed feed)
    {
        XmlReaderSettings settings = new XmlReaderSettings();

        settings.IgnoreWhitespace             = true;
        settings.CheckCharacters              = true;
        settings.CloseInput                   = true;
        settings.IgnoreComments               = true;
        settings.IgnoreProcessingInstructions = true;
        settings.DtdProcessing                = DtdProcessing.Prohibit;

        if (string.IsNullOrEmpty(url))
        {
            return(false);
        }

        using (XmlReader reader = XmlReader.Create(url, settings))
        {
            SyndicationFeedFormatter formatter      = null;
            Atom10FeedFormatter      atom_formatter = new Atom10FeedFormatter();
            Rss20FeedFormatter       rss_formatter  = new Rss20FeedFormatter();

            if (reader.ReadState == ReadState.Initial)
            {
                reader.MoveToContent();
            }

            if (atom_formatter.CanRead(reader))
            {
                formatter = atom_formatter;
            }
            if (rss_formatter.CanRead(reader))
            {
                formatter = rss_formatter;
            }
            if (formatter == null)
            {
                return(false);
            }

            formatter.ReadFrom(reader);
            feed = formatter.Feed;

            return(true);
        }
    }
Ejemplo n.º 9
0
    /// <summary>
    /// Will try to get RSS data from url passed in constructor. Can do atom or rss
    /// </summary>
    /// <returns></returns>
    public SyndicationFeed GetRSSData()
    {
        SyndicationFeed   feed     = null;
        XmlReaderSettings settings = new XmlReaderSettings();

        settings.IgnoreWhitespace             = true;
        settings.CheckCharacters              = true;
        settings.CloseInput                   = true;
        settings.IgnoreComments               = true;
        settings.IgnoreProcessingInstructions = true;
        settings.DtdProcessing                = DtdProcessing.Prohibit;
        if (!string.IsNullOrEmpty(this.RssFeedUrl))
        {
            using (XmlReader reader = XmlReader.Create(this.RssFeedUrl, settings))
            {
                SyndicationFeedFormatter GenericFeedFormatter = null;
                Atom10FeedFormatter      atom = new Atom10FeedFormatter();
                Rss20FeedFormatter       rss  = new Rss20FeedFormatter();
                if (reader.ReadState == ReadState.Initial)
                {
                    reader.MoveToContent();
                }
                // try either atom or rss reading
                if (atom.CanRead(reader))
                {
                    GenericFeedFormatter = atom;
                }
                if (rss.CanRead(reader))
                {
                    GenericFeedFormatter = rss;
                }
                if (GenericFeedFormatter == null)
                {
                    return(null);
                }
                GenericFeedFormatter.ReadFrom(reader);
                feed = GenericFeedFormatter.Feed;
            }
        }
        return(feed);
    }
Ejemplo n.º 10
0
        private SyndicationFeed GetFeed(string url)
        {
            using (XmlReader reader = XmlReader.Create(url))
            {
                Rss20FeedFormatter rss = new Rss20FeedFormatter();
                if (rss.CanRead(reader))
                {
                    rss.ReadFrom(reader);
                    return(rss.Feed);
                }

                Atom10FeedFormatter atom = new Atom10FeedFormatter();
                if (atom.CanRead(reader))
                {
                    atom.ReadFrom(reader);
                    return(atom.Feed);
                }
            }

            return(null);
        }
Ejemplo n.º 11
0
        public void CanRead()
        {
            Rss20FeedFormatter f = new Rss20FeedFormatter();

            Assert.IsTrue(f.CanRead(CreateReader("<rss>")), "#1");
            Assert.IsFalse(f.CanRead(CreateReader("<item>")), "#2");
            Assert.IsFalse(f.CanRead(CreateReader("<rss xmlns='urn:foo'>")), "#3");
            Assert.IsFalse(f.CanRead(CreateReader("<feed xmlns='http://www.w3.org/2005/Atom'>")), "#4");
            Assert.IsFalse(f.CanRead(CreateReader("<hoge>")), "#5");
            XmlReader r = CreateReader("<rss></rss>");

            r.Read();              // element
            r.Read();              // endelement
            Assert.IsFalse(f.CanRead(r), "#6");

            r = CreateReader("<rss><channel><title>test</title></channel></rss>");
            r.Read();              // feed
            r.Read();              // channel
            Assert.IsFalse(f.CanRead(r), "#7");
        }
Ejemplo n.º 12
0
        public static async Task <TSyndicationFeed> LoadAsync <TSyndicationFeed>(XmlReader reader, CancellationToken ct)
            where TSyndicationFeed : SyndicationFeed, new()
        {
            Atom10FeedFormatter <TSyndicationFeed> atomSerializer = new Atom10FeedFormatter <TSyndicationFeed>();

            if (atomSerializer.CanRead(reader))
            {
                await atomSerializer.ReadFromAsync(reader, ct);

                return(atomSerializer.Feed as TSyndicationFeed);
            }

            Rss20FeedFormatter <TSyndicationFeed> rssSerializer = new Rss20FeedFormatter <TSyndicationFeed>();

            if (rssSerializer.CanRead(reader))
            {
                await rssSerializer.ReadFromAsync(reader, ct);

                return(rssSerializer.Feed as TSyndicationFeed);
            }

            throw new XmlException(string.Format(SR.UnknownFeedXml, reader.LocalName, reader.NamespaceURI));
        }
Ejemplo n.º 13
0
 public IEnumerable <Entity> GetEntities(string urlFeedLocation)
 {
     using (XmlReader reader = XmlReader.Create(urlFeedLocation))
     {
         Rss20FeedFormatter rss = new Rss20FeedFormatter();
         // try to read it as an atom feed
         if (rss.CanRead(reader))
         {
             rss.ReadFrom(reader);
             List <Entity> entities = new List <Entity>();
             foreach (SyndicationItem item in rss.Feed.Items)
             {
                 entities.Add(new Entity()
                 {
                     Title           = item.Title.Text,
                     PublicationDate = item.PublishDate,
                     Link            = item.Links[0].Uri.ToString(),
                 });
             }
             return(entities);
         }
     }
     return(null);
 }
Ejemplo n.º 14
0
        static void Main(string[] args)
        {
            Rss20FeedFormatter feedFormatter = new Rss20FeedFormatter();
            XmlReader          rssReader     = XmlReader.Create("https://habr.com/rss/interesting/");

            if (feedFormatter.CanRead(rssReader))
            {
                feedFormatter.ReadFrom(rssReader);
                var DataContext = feedFormatter.Feed;
                var feedContent = feedFormatter.Feed.Items;
                foreach (var el in feedContent)
                {
                    //Дата публикации.
                    Console.WriteLine("Дата: {0}", el.PublishDate);
                    //Название статьи.
                    Console.WriteLine("Название: {0}", el.Title.Text);
                    //Описание.
                    Console.WriteLine("Описание: {0}", el.Summary.Text);
                    //Ссылка.
                    Console.WriteLine("Ссылка: {0}\r\n", el.Id);
                }
                rssReader.Close();
            }
        }
Ejemplo n.º 15
0
        public bool ValidateRssFeed()
        {
            Rss20FeedFormatter validator = new Rss20FeedFormatter();

            return(validator.CanRead(this.reader));
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Gets an RSS feed from a given URL and returns the resulting XML as a string.
        /// </summary>
        /// <param name="url">URL of the feed to load.</param>
        /// <param name="count">The count of postings to return.</param>
        /// <returns>The feed XML as a string.</returns>
        public SyndicationFeed GetFeed(string url, int count)
        {
            XmlReaderSettings settings = new XmlReaderSettings();

            settings.IgnoreWhitespace             = true;
            settings.CheckCharacters              = true;
            settings.CloseInput                   = true;
            settings.IgnoreComments               = true;
            settings.IgnoreProcessingInstructions = true;
            settings.ProhibitDtd                  = false;

            using (XmlReader reader = XmlReader.Create(url, settings))
            {
                SyndicationFeedFormatter formatter = null;
                Atom10FeedFormatter      atom      = new Atom10FeedFormatter();
                Rss20FeedFormatter       rss       = new Rss20FeedFormatter();
                SyndicationFeed          feed;

                // Determine the format of the feed
                if (reader.ReadState == ReadState.Initial)
                {
                    reader.MoveToContent();
                }

                if (atom.CanRead(reader))
                {
                    formatter = atom;
                }

                if (rss.CanRead(reader))
                {
                    formatter = rss;
                }

                if (formatter == null)
                {
                    return(null);
                }

                formatter.ReadFrom(reader);
                feed = formatter.Feed;

                // Remove unwanted items
                List <SyndicationItem> items = new List <SyndicationItem>();

                int added = 0;

                foreach (SyndicationItem i in feed.Items)
                {
                    items.Add(i);

                    if (added++ == count - 1)
                    {
                        break;
                    }
                }

                feed.Items = items;
                return(feed);
            }
        }