/// <summary> /// Check for Updates /// </summary> /// <param name="callback"> /// The callback. /// </param> public void CheckForUpdates(Action<UpdateCheckInformation> callback) { ThreadPool.QueueUserWorkItem( delegate { try { string url = this.userSettingService.GetUserSetting<string>(UserSettingConstants.HandBrakePlatform) .Contains("x86_64") ? this.userSettingService.GetUserSetting<string>(UserSettingConstants.Appcast_x64) : this.userSettingService.GetUserSetting<string>(UserSettingConstants.Appcast_i686); var currentBuild = this.userSettingService.GetUserSetting<int>(ASUserSettingConstants.HandBrakeBuild); var skipBuild = this.userSettingService.GetUserSetting<int>( UserSettingConstants.Skipversion); // Initialize variables WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); var reader = new AppcastReader(); // Get the data, convert it to a string, and parse it into the AppcastReader reader.GetUpdateInfo(new StreamReader(response.GetResponseStream()).ReadToEnd()); // Further parse the information string build = reader.Build; int latest = int.Parse(build); int current = currentBuild; int skip = skipBuild; // If the user wanted to skip this version, don't report the update if (latest == skip) { var info = new UpdateCheckInformation { NewVersionAvailable = false }; callback(info); return; } var info2 = new UpdateCheckInformation { NewVersionAvailable = latest > current, DescriptionUrl = reader.DescriptionUrl, DownloadFile = reader.DownloadFile, Build = reader.Build, Version = reader.Version, }; callback(info2); } catch (Exception exc) { callback(new UpdateCheckInformation { NewVersionAvailable = false, Error = exc }); } }); }
/// <summary> /// Begins checking for an update to HandBrake. /// </summary> /// <param name="callback"> /// The method that will be called when the check is finished. /// </param> /// <param name="debug"> /// Whether or not to execute this in debug mode. /// </param> /// <param name="url"> /// The url. /// </param> /// <param name="currentBuild"> /// The current Build. /// </param> /// <param name="skipBuild"> /// The skip Build. /// </param> /// <param name="currentVersion"> /// The current Version. /// </param> public static void BeginCheckForUpdates(AsyncCallback callback, bool debug, string url, int currentBuild, int skipBuild, string currentVersion) { ThreadPool.QueueUserWorkItem(delegate { try { // Initialize variables WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); AppcastReader reader = new AppcastReader(); // Get the data, convert it to a string, and parse it into the AppcastReader reader.GetUpdateInfo(new StreamReader(response.GetResponseStream()).ReadToEnd()); // Further parse the information string build = reader.Build; int latest = int.Parse(build); int current = currentBuild; int skip = skipBuild; // If the user wanted to skip this version, don't report the update if (latest == skip) { UpdateCheckInformation info = new UpdateCheckInformation { NewVersionAvailable = false }; callback(new UpdateCheckResult(debug, info)); return; } UpdateCheckInformation info2 = new UpdateCheckInformation { NewVersionAvailable = latest > current, DescriptionUrl = reader.DescriptionUrl, DownloadFile = reader.DownloadFile, Build = reader.Build, Version = reader.Version, }; callback(new UpdateCheckResult(debug, info2)); } catch (Exception exc) { callback(new UpdateCheckResult(debug, new UpdateCheckInformation { Error = exc })); } }); }