diff --git a/ModpackUpdater/AppUpdater.vb b/ModpackUpdater/AppUpdater.vb index adb2e11..29377bb 100644 --- a/ModpackUpdater/AppUpdater.vb +++ b/ModpackUpdater/AppUpdater.vb @@ -1,44 +1,39 @@ Imports System.IO -Imports System.Net Imports System.Net.Http -Imports WebDav +Imports Newtonsoft.Json +Imports Newtonsoft.Json.Converters Public Class AppUpdater - Private Const WEBDAV_URL As String = "https://cloud.pilzinsel64.de/public.php/webdav" - Private Const WEBDAV_KEY As String = "z4dGicDYmG2neG9" - Private Const DOWNLOAD_URL As String = "https://cloud.pilzinsel64.de/s/z4dGicDYmG2neG9/download" + Private Class UpdateInfo + + Public Property Version As Version + Public Property DownloadUrl As String + End Class - Public Shared Async Function Check() As Task(Of Boolean) + Private Const UPDATE_URL As String = "https://git.pilzinsel64.de/gaming/minecraft/minecraft-modpack-updater/-/snippets/3/raw??????????" + Private ReadOnly httpClient As New HttpClient + Private info As UpdateInfo + + Public Async Function Check() As Task(Of Boolean) Dim appFileName = Pilz.IO.Extensions.GetExecutablePath() Dim hasUpdate As Boolean = False - Dim params As New WebDavClientParams With { - .BaseAddress = New Uri(WEBDAV_URL), - .Credentials = New NetworkCredential(WEBDAV_KEY, String.Empty) - } Try - Using client As New WebDavClient(params) - Dim result = Await client.Propfind(String.Empty) + Dim result = Await httpClient.GetStringAsync(UPDATE_URL) + info = JsonConvert.DeserializeObject(Of UpdateInfo)(result) - If result.IsSuccessful AndAlso result.Resources.Count <> 0 Then - Dim resource = result.Resources(0) - Dim appModificationDate = File.GetLastWriteTimeUtc(appFileName) - Dim remoteModificationDate = resource.LastModifiedDate?.ToUniversalTime - - If remoteModificationDate > appModificationDate Then - hasUpdate = True - End If - End If - End Using + If info IsNot Nothing AndAlso info.Version < New Version(Application.ProductVersion) Then + hasUpdate = True + End If Catch ex As Exception End Try Return hasUpdate End Function - Public Shared Async Function Install() As Task + Public Async Function Install() As Task Dim client As New HttpClient Dim tempFileName = Path.GetTempFileName Dim appFileName = Pilz.IO.Extensions.GetExecutablePath() @@ -54,7 +49,7 @@ Public Class AppUpdater Using tempFileStream As New FileStream(tempFileName, FileMode.Create, FileAccess.ReadWrite) Dim downloadStream As Stream = Nothing Try - downloadStream = Await client.GetStreamAsync(DOWNLOAD_URL) + downloadStream = Await client.GetStreamAsync(info.DownloadUrl) Await downloadStream.CopyToAsync(tempFileStream) Catch Finally