diff --git a/Elwig/App.xaml.cs b/Elwig/App.xaml.cs index dc9b104..b168787 100644 --- a/Elwig/App.xaml.cs +++ b/Elwig/App.xaml.cs @@ -339,20 +339,21 @@ namespace Elwig { public static async Task CheckForUpdates(bool showAlert = false) { if (Config.UpdateUrl == null) return; - var latest = await Utils.GetLatestInstallerUrl(Config.UpdateUrl); - if (latest != null && new Version(latest.Value.Version) > Version) { - await MainDispatcher.BeginInvoke(() => { - var d = new UpdateDialog(latest.Value.Version, latest.Value.Url, latest.Value.Size); - if (d.ShowDialog() == true) { - ShutdownNow(); - } - }); - } else if (showAlert) { - if (latest == null) { - InteractionService.ShowError("Nach Updates suchen", "Informationen konnten nicht abgerufen werden!"); - } else { - InteractionService.ShowInformation("Nach Updates suchen", $"Elwig ist auf dem aktuellsten Stand! (Version: {latest.Value.Version})"); + try { + var latest = await Utils.GetLatestInstallerUrl(Config.UpdateUrl); + if (new Version(latest.Version) > Version) { + await MainDispatcher.BeginInvoke(() => { + var d = new UpdateDialog(latest.Version, latest.Url, latest.Size); + if (d.ShowDialog() == true) { + ShutdownNow(); + } + }); + } else if (showAlert) { + InteractionService.ShowInformation("Nach Updates suchen", $"Elwig ist auf dem aktuellsten Stand! (Version: {latest.Version})"); } + } catch (Exception exc) { + if (showAlert) + InteractionService.ShowException("Nach Updates suchen", $"Informationen konnten nicht abgerufen werden!", exc); } } diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index a678b78..6d415a7 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -483,12 +483,20 @@ namespace Elwig.Helpers { return InternetGetConnectedState(out var _, 0); } + public static string ReplaceUmlaute(string s) { + return s + .Replace("ä", "ae").Replace("Ä", "Ae") + .Replace("ö", "oe").Replace("Ö", "Oe") + .Replace("ü", "ue").Replace("Ü", "Ue") + .Replace("ß", "ss").Replace("ẞ", "SS"); + } + public static HttpClient GetHttpClient(string? username = null, string? password = null, string? accept = null) { var client = new HttpClient() { Timeout = TimeSpan.FromSeconds(5), }; client.DefaultRequestHeaders.UserAgent.Clear(); - client.DefaultRequestHeaders.UserAgent.ParseAdd($"Elwig/{App.Version} ({App.Client?.NameToken}, {App.BranchName}, {Environment.MachineName}, {Environment.OSVersion})"); + client.DefaultRequestHeaders.UserAgent.ParseAdd($"Elwig/{App.Version} ({App.Client?.NameToken}, {ReplaceUmlaute(App.BranchName)}, {Environment.MachineName}, {Environment.OSVersion})"); client.DefaultRequestHeaders.Accept.Clear(); if (accept != null) client.DefaultRequestHeaders.Accept.Add(new(accept)); @@ -497,18 +505,13 @@ namespace Elwig.Helpers { return client; } - public static async Task<(string Version, string Url, long Size)?> GetLatestInstallerUrl(string url) { - try { - using var client = GetHttpClient(accept: "application/json"); - using var res = await client.GetAsync(url); - if (!res.IsSuccessStatusCode) - return null; - var resJson = JsonNode.Parse(await res.Content.ReadAsStringAsync()); - var data = resJson!["data"]!.AsArray()[^1]!; - return ((string)data["version"]!, (string)data["url"]!, (long)data["size"]!); - } catch { - return null; - } + public static async Task<(string Version, string Url, long Size)> GetLatestInstallerUrl(string url) { + using var client = GetHttpClient(accept: "application/json"); + using var res = await client.GetAsync(url); + res.EnsureSuccessStatusCode(); + var resJson = JsonNode.Parse(await res.Content.ReadAsStringAsync()); + var data = resJson!["data"]!.AsArray()[^1]!; + return ((string)data["version"]!, (string)data["url"]!, (long)data["size"]!); } public static async Task UploadExportData(string zip, string url, string username, string password) {