Files
ChanSort/source/ChanSort/UpdateCheck.cs
Horst Beham 7fc413e64d - Grundig: added support for dvb*_config.xml channel lists
- experimental feature to allow editing Audio-PID (but turned out to have no effect for webOS 5)
2021-01-02 13:18:37 +01:00

74 lines
2.2 KiB
C#

using System.Net;
using System.Threading;
using ChanSort.Ui.Properties;
using DevExpress.XtraEditors;
namespace ChanSort.Ui
{
class UpdateCheck
{
private const string UpdateUrl = "https://github.com/PredatH0r/ChanSort/releases";
private const string SearchString = "ChanSort_";
public static void CheckForNewVersion()
{
var check = new UpdateCheck();
Thread thread = new Thread(check.Check);
thread.Start();
}
private void Check()
{
try
{
var newVersion = this.GetLatestVersion();
if (newVersion.CompareTo(MainForm.AppVersionFull.TrimStart('v')) > 0)
this.NotifyAboutNewVersion(newVersion);
}
catch { }
}
private string GetLatestVersion()
{
string response;
var oldProtocol = ServicePointManager.SecurityProtocol;
try
{
//Change SSL checks so that all checks pass
//ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
using WebClient client = new WebClient();
client.Proxy = null; // prevent a 1min wait/timeout by a .NET bug
response = client.DownloadString(UpdateUrl);
}
finally
{
ServicePointManager.SecurityProtocol = oldProtocol;
}
int start = response.IndexOf(SearchString);
if (start >= 0)
{
int end = response.IndexOf(".zip", start);
int len = end - start - SearchString.Length;
if (len >= 10) // YYYY-MM-DD plus optional _HHmm suffix for a revision
return response.Substring(start + SearchString.Length, len);
}
return string.Empty;
}
private void NotifyAboutNewVersion(string newVersion)
{
if (XtraMessageBox.Show(
string.Format(Resources.UpdateCheck_NotifyAboutNewVersion_Message, newVersion),
Resources.UpdateCheck_NotifyAboutNewVersion_Caption,
System.Windows.Forms.MessageBoxButtons.YesNo,
System.Windows.Forms.MessageBoxIcon.Question,
System.Windows.Forms.MessageBoxDefaultButton.Button1) != System.Windows.Forms.DialogResult.Yes)
return;
BrowserHelper.OpenUrl(UpdateUrl);
}
}
}