示例#1
0
        /// <summary>
        /// Serializes the feed.
        /// </summary>
        /// <param name="rssFeed">The RSS feed.</param>
        public static void SerializeFeed(Rss.RssFeed rssFeed)
        {
            try
            {
                BinaryFormatter ser = new BinaryFormatter();

                //    XmlSerializer ser = new XmlSerializer(typeof(Rss.RssFeed));
                if (rssFeed != null)
                {
                    FileStream stream = File.Create(DataFolder + "\\" + rssFeed.GetHashCode().ToString("X") + ".bin");
                    ser.Serialize(stream, rssFeed);
                    stream.Close();
                }
            }
            catch (Exception)
            {
                //MessageBox.Show("An error occurred while saving the feed to the local cache:\n\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
        }
示例#2
0
        /// <summary>
        /// Gets the RSS feed.
        /// </summary>
        /// <param name="feedItem">The feed item.</param>
        /// <returns></returns>
        public static Rss.RssFeed GetFeed(FeedItem feedItem, bool OnlyCache)
        {
            Rss.RssFeed rssFeed         = null;
            Rss.RssFeed rssExistingFeed = null;

            if (feedItem.FeedHashCode != "" && feedItem.FeedHashCode != null && File.Exists(DataFolder + "\\" + feedItem.FeedHashCode + ".bin"))
            {
                try
                {
                    //XmlSerializer ser = new XmlSerializer(typeof(Rss.RssFeed));
                    BinaryFormatter ser    = new BinaryFormatter();
                    FileStream      stream = File.Open(DataFolder + "\\" + feedItem.FeedHashCode + ".bin", FileMode.Open, FileAccess.Read);
                    rssExistingFeed = (Rss.RssFeed)ser.Deserialize(stream);
                    stream.Close();
                    if (OnlyCache == false)
                    {
                        if (feedItem.Authenticate == true)
                        {
                            rssFeed = Rss.RssFeed.Read(rssExistingFeed, feedItem.Username, feedItem.Password);
                        }
                        else
                        {
                            rssFeed = Rss.RssFeed.Read(rssExistingFeed);
                        }
                        SerializeFeed(rssFeed);
                    }
                    else
                    {
                        rssFeed = rssExistingFeed;
                    }
                }
                catch
                { // something went wrong
                    try
                    {
                        if (feedItem.Authenticate == true)
                        {
                            rssFeed = Rss.RssFeed.Read(feedItem.Url, feedItem.Username, feedItem.Password);
                        }
                        else
                        {
                            rssFeed = Rss.RssFeed.Read(feedItem.Url);
                        }
                    }
                    catch (ApplicationException ex)
                    {
                        if (Settings.Default.LogLevel > 0)
                        {
                            log.Error("GetFeed", ex);
                        }
                    }
                    SerializeFeed(rssFeed);
                }
            }
            else
            {
                try
                {
                    rssFeed = Rss.RssFeed.Read(feedItem.Url);
                    SerializeFeed(rssFeed);
                }
                catch (ApplicationException ex)
                {
                    if (Settings.Default.LogLevel > 0)
                    {
                        log.Error("GetFeed", ex);
                    }
                }
                try
                {
                    if (rssFeed != null && !File.Exists(Path.Combine(Utils.DataFolder, rssFeed.GetHashCode().ToString("X") + ".ico")))
                    {
                        GetFavIcon(new Uri(rssFeed.Channels[0].Link), rssFeed.GetHashCode().ToString("X"));
                    }
                }
                catch {  }
                try
                {
                    if (rssFeed != null && !File.Exists(Path.Combine(Utils.DataFolder, rssFeed.GetHashCode().ToString("X") + ".jpg")))
                    {
                        GetFeedImage(new Uri(rssFeed.Channels[0].Image.Url), rssFeed.GetHashCode().ToString("X"));
                    }
                }
                catch { }
            }
            if (rssFeed != null)
            {
                Settings.Default.Feeds[feedItem].FeedHashCode = rssFeed.GetHashCode().ToString("X");
            }
            return(rssFeed);
        }