From d2908c122c8074feccd86e8636ef9f1ea3ecf415 Mon Sep 17 00:00:00 2001 From: erri120 Date: Mon, 13 Nov 2023 14:17:26 +0100 Subject: [PATCH] Miscellaneous fixes for .NET 8 (#767) * Use Microsoft.AspNetCore.WebUtilities * Add NoDisplay=true to the XDG Desktop Entry --- Directory.Packages.props | 3 +- ...exusMods.Networking.NexusWebApi.NMA.csproj | 1 + .../OAuth.cs | 29 ++----------------- .../ProtocolRegistrationLinux.cs | 1 + 4 files changed, 7 insertions(+), 27 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 4ef22fa336..e0f465eef6 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -38,6 +38,7 @@ + @@ -100,4 +101,4 @@ - \ No newline at end of file + diff --git a/src/Networking/NexusMods.Networking.NexusWebApi.NMA/NexusMods.Networking.NexusWebApi.NMA.csproj b/src/Networking/NexusMods.Networking.NexusWebApi.NMA/NexusMods.Networking.NexusWebApi.NMA.csproj index f4f9b74731..74df2a2179 100644 --- a/src/Networking/NexusMods.Networking.NexusWebApi.NMA/NexusMods.Networking.NexusWebApi.NMA.csproj +++ b/src/Networking/NexusMods.Networking.NexusWebApi.NMA/NexusMods.Networking.NexusWebApi.NMA.csproj @@ -6,6 +6,7 @@ + diff --git a/src/Networking/NexusMods.Networking.NexusWebApi.NMA/OAuth.cs b/src/Networking/NexusMods.Networking.NexusWebApi.NMA/OAuth.cs index 62d43926bd..7ff63adc5e 100644 --- a/src/Networking/NexusMods.Networking.NexusWebApi.NMA/OAuth.cs +++ b/src/Networking/NexusMods.Networking.NexusWebApi.NMA/OAuth.cs @@ -1,8 +1,8 @@ using System.Reactive.Linq; using System.Security.Cryptography; using System.Text; -using System.Text.Encodings.Web; using System.Text.Json; +using Microsoft.AspNetCore.WebUtilities; using Microsoft.Extensions.Logging; using NexusMods.Common; using NexusMods.Common.OSInterop; @@ -132,8 +132,7 @@ private IInterprocessJob CreateJob(Uri url) internal static Uri GenerateAuthorizeUrl(string challenge, string state) { - // TODO: switch to Microsoft.AspNetCore.WebUtilities when .NET 8 is available - var request = new Dictionary + var request = new Dictionary { { "response_type", "code" }, { "scope", "openid profile email" }, @@ -144,28 +143,6 @@ internal static Uri GenerateAuthorizeUrl(string challenge, string state) { "state", state }, }; - return new Uri($"{OAuthUrl}/authorize{CreateQueryString(request)}"); - } - - private static string CreateQueryString(Dictionary parameters) - { - var builder = new StringBuilder(); - var first = true; - foreach (var pair in parameters) - { - var (key, value) = pair; - - builder.Append(first ? '?' : '&'); - builder.Append(UrlEncoder.Default.Encode(key)); - builder.Append('='); - if (!string.IsNullOrEmpty(value)) - { - builder.Append(UrlEncoder.Default.Encode(value)); - } - - first = false; - } - - return builder.ToString(); + return new Uri(QueryHelpers.AddQueryString($"{OAuthUrl}/authorize", request)); } } diff --git a/src/NexusMods.Common/ProtocolRegistration/ProtocolRegistrationLinux.cs b/src/NexusMods.Common/ProtocolRegistration/ProtocolRegistrationLinux.cs index 154fe2cf58..bd0537bb64 100644 --- a/src/NexusMods.Common/ProtocolRegistration/ProtocolRegistrationLinux.cs +++ b/src/NexusMods.Common/ProtocolRegistration/ProtocolRegistrationLinux.cs @@ -57,6 +57,7 @@ public ProtocolRegistrationLinux(IProcessFactory processFactory, IFileSystem fil sb.AppendLine($"Path={workingDirectory}"); sb.AppendLine($"Exec={commandLine}"); sb.AppendLine($"MimeType=x-scheme-handler/{protocol}"); + sb.AppendLine("NoDisplay=true"); await desktopEntryFile.WriteAllTextAsync(sb.ToString());