summaryrefslogtreecommitdiffstats
path: root/win/C#/HandBrake.Framework/Services/UpdateService.cs
diff options
context:
space:
mode:
authorsr55 <[email protected]>2010-09-19 12:17:07 +0000
committersr55 <[email protected]>2010-09-19 12:17:07 +0000
commit1d3a178d671af6d09b3e3be35562fe5070ace809 (patch)
tree288f38ac3e39cf5300fb7d3ddffff5e3604b1565 /win/C#/HandBrake.Framework/Services/UpdateService.cs
parent8cac9d8c62ce452ff27a6b70f005056f44b55581 (diff)
WinGui:
- Moved some non-specific HandBrake code (Exception Window, Update Information Window, Update Download Window) out into a separate framework library. Hoping to make this more reusable at a later point. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3543 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/C#/HandBrake.Framework/Services/UpdateService.cs')
-rw-r--r--win/C#/HandBrake.Framework/Services/UpdateService.cs101
1 files changed, 101 insertions, 0 deletions
diff --git a/win/C#/HandBrake.Framework/Services/UpdateService.cs b/win/C#/HandBrake.Framework/Services/UpdateService.cs
new file mode 100644
index 000000000..21688e0a5
--- /dev/null
+++ b/win/C#/HandBrake.Framework/Services/UpdateService.cs
@@ -0,0 +1,101 @@
+/* UpdateService.cs $
+ This file is part of the HandBrake source code.
+ Homepage: <http://handbrake.fr>.
+ It may be used under the terms of the GNU General Public License. */
+
+namespace HandBrake.Framework.Services
+{
+ using System;
+ using System.IO;
+ using System.Net;
+ using System.Threading;
+
+ using HandBrake.Framework.Helpers;
+ using HandBrake.Framework.Model;
+
+ public class UpdateService
+ {
+ /// <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(new WaitCallback(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.GetInfo(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,
+ BuildInformation = null
+ };
+ callback(new UpdateCheckResult(debug, info));
+ return;
+ }
+
+ UpdateCheckInformation info2 = new UpdateCheckInformation
+ {
+ NewVersionAvailable = latest > current,
+ BuildInformation = reader
+ };
+ callback(new UpdateCheckResult(debug, info2));
+ }
+ catch (Exception exc)
+ {
+ callback(new UpdateCheckResult(debug, new UpdateCheckInformation { Error = exc }));
+ }
+ }));
+ }
+
+ /// <summary>
+ /// End Check for Updates
+ /// </summary>
+ /// <param name="result">
+ /// The result.
+ /// </param>
+ /// <returns>
+ /// Update Check information
+ /// </returns>
+ public static UpdateCheckInformation EndCheckForUpdates(IAsyncResult result)
+ {
+ return ((UpdateCheckResult)result).Result;
+ }
+ }
+}