private void EndGetResponse(IAsyncResult result) { try{ var state = result.AsyncState as MainViewModel.RequestState; WebResponse response = state.Request.EndGetResponse(result); Rss.Structure.RssFeed rss = RssHelper.ReadRss(response.GetResponseStream()); if (rss.Channel == null) { Deployment.Current.Dispatcher.BeginInvoke(() => UrlStatus = invalidRssFeed); } else { Deployment.Current.Dispatcher.BeginInvoke(() => UrlStatus = validRssFeed); if (!isolatedStorageSettings.Contains(RssFeedKey)) { isolatedStorageSettings[RssFeedKey] = new RssFeed(); } var rssFeed = isolatedStorageSettings[RssFeedKey] as RssFeed; rssFeed.RssLink = state.Address; rssFeed.RssTitle = rss.Channel.Title.ToLower(); rssFeed.LastUpdated = DateTime.Now; rssFeed.Stories = new ObservableCollection <RssStory>(RssFeed.CloneStories(rss)); } } catch (Exception exception) { Debug.Assert(exception != null); Deployment.Current.Dispatcher.BeginInvoke(() => UrlStatus = invalidRssFeed); } }
private void EndGetResponse(IAsyncResult result) { try { var state = result.AsyncState as RequestState; WebResponse response = state.Request.EndGetResponse(result); Rss.Structure.RssFeed rss = RssHelper.ReadRss(response.GetResponseStream()); Deployment.Current.Dispatcher.BeginInvoke(() => IsDataLoaded = true); Deployment.Current.Dispatcher.BeginInvoke(() => UpdateRssFeed(rss, state.RssFeed)); } catch (Exception exception) { Deployment.Current.Dispatcher.BeginInvoke(() => IsDataLoaded = true); Deployment.Current.Dispatcher.BeginInvoke(() => MessageBox.Show(exception.Message)); } }
private static void ProcessRssInfo(Version currentVersion) { // Reset latest Greenshot var rssFiles = RssHelper.ReadRss(); if (rssFiles == null) { return; } // Retrieve the current and latest greenshot foreach (var rssFile in rssFiles) { if (rssFile.File.StartsWith("Greenshot")) { // check for exe if (!rssFile.IsExe) { continue; } // do we have a version? if (rssFile.Version == null) { Log.Debug().WriteLine("Skipping unversioned exe {0} which is published at {1} : {2}", rssFile.File, rssFile.Pubdate.ToLocalTime(), rssFile.Link); continue; } // if the file is unstable, we will skip it when: // the current version is a release or release candidate AND check unstable is turned off. if (rssFile.IsAlpha) { // Skip if we shouldn't check unstables if (CoreConfigurationExtensions.BuildState == BuildStates.RELEASE && !CoreConfig.CheckForUnstable) { continue; } } // if the file is a release candidate, we will skip it when: // the current version is a release AND check unstable is turned off. if (rssFile.IsReleaseCandidate) { if (CoreConfigurationExtensions.BuildState == BuildStates.RELEASE && !CoreConfig.CheckForUnstable) { continue; } } // Compare versions var versionCompare = rssFile.Version.CompareTo(currentVersion); if (versionCompare > 0) { Log.Debug().WriteLine("Found newer Greenshot '{0}' with version {1} published at {2} : {3}", rssFile.File, rssFile.Version, rssFile.Pubdate.ToLocalTime(), rssFile.Link); if (_latestGreenshot == null || rssFile.Version.CompareTo(_latestGreenshot.Version) > 0) { _latestGreenshot = rssFile; if (rssFile.IsReleaseCandidate || rssFile.IsAlpha) { _downloadLink = VersionHistoryLink; } else { _downloadLink = StableDownloadLink; } } } else if (versionCompare < 0) { Log.Debug().WriteLine("Skipping older greenshot with version {0}", rssFile.Version); } else if (versionCompare == 0) { Log.Debug().WriteLine("Found current version as exe {0} with version {1} published at {2} : {3}", rssFile.File, rssFile.Version, rssFile.Pubdate.ToLocalTime(), rssFile.Link); } } } }