/// <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); } }
/// <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); }