Example #1
0
        private void FeedsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            FeedItemsList.ItemsSource = null;

            this.Cursor = Cursors.Wait;

            var feed = FeedsList.SelectedItem as RssFeed;

            using (var reader = new RssXmlReader(feed.Url))
            {
                try
                {
                    var list = new List <CleanedSyndicationItem>();
                    var doc  = SyndicationFeed.Load(reader);
                    foreach (var item in doc.Items)
                    {
                        list.Add(new CleanedSyndicationItem(item));
                    }

                    FeedItemsList.ItemsSource = list;
                }
                catch (Exception ex)
                {
                    FeedItemsList.ItemsSource = new List <SyndicationItem>()
                    {
                        new SyndicationItem(ex.Message, null, null)
                    };
                }
            }

            this.Cursor = Cursors.Arrow;
        }
Example #2
0
        /// <summary>
        /// Supports RSS 1, 2 and ATOM 1.0 feed standards
        /// </summary>
        /// <param name="url"></param>
        /// <param name="timeout"></param>
        /// <returns></returns>
        internal SyndicationFeed GetFeed(Uri url, int timeout, NetworkCredential credentials)
        {
            SyndicationFeed feed    = null;
            HttpWebRequest  request = (HttpWebRequest)WebRequest.Create(url);

            request.UserAgent = Configuration.UserAgent;
            request.Timeout   = timeout;
            if (credentials != null)
            {
                request.Credentials     = credentials;
                request.PreAuthenticate = true;
            }

            try
            {
                using (WebResponse response = request.GetResponse())
                {
                    XmlSanitizingStream stream = new XmlSanitizingStream(response.GetResponseStream());
                    var xml = stream.ReadToEnd();
                    using (RssXmlReader reader = new RssXmlReader(Flush(xml)))
                    {
                        if (Atom03FeedFormatter.CanReadFrom(reader))
                        {
                            var aff = new Atom03FeedFormatter();
                            aff.ReadFrom(reader);
                            feed = aff.Feed;
                        }
                        else if (Rss10FeedFormatter.CanReadFrom(reader))
                        {
                            // RSS 1.0
                            var rff = new Rss10FeedFormatter();
                            rff.ReadFrom(reader);
                            feed = rff.Feed;
                        }
                        else
                        {
                            // RSS 2.0 or Atom 1.0
                            try
                            {
                                feed = CustomSyndicationFeed.Load(reader);
                            }
                            catch (XmlException ex)
                            {
                                logger.Error(ex);
                                throw;
                            }
                        }
                    }
                }
            }
            catch (WebException ex)
            {
                logger.Error(ex);
            }
            catch (SocketException ex)
            {
                logger.Error(ex);
            }
            catch (IOException ex)
            {
                logger.Error(ex);
            }
            return(feed);
        }