From fcebd150774b4d481c70f8d967e5da4e0f8e02f0 Mon Sep 17 00:00:00 2001 From: Anna Date: Tue, 28 Nov 2023 17:04:36 +0000 Subject: [PATCH] Send Dalamud user-agent when downloading plugins (#1550) Sets the user-agent on all HappyHttp requests to `Dalamud/`, and pass `Accept: application/zip` in plugin downloads. --- Dalamud/Networking/Http/HappyHttpClient.cs | 14 +++++++++++++- Dalamud/Plugin/Internal/PluginManager.cs | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Dalamud/Networking/Http/HappyHttpClient.cs b/Dalamud/Networking/Http/HappyHttpClient.cs index 8459f1453..4379a698f 100644 --- a/Dalamud/Networking/Http/HappyHttpClient.cs +++ b/Dalamud/Networking/Http/HappyHttpClient.cs @@ -1,6 +1,9 @@ using System; using System.Net; using System.Net.Http; +using System.Net.Http.Headers; + +using Dalamud.Utility; namespace Dalamud.Networking.Http; @@ -25,7 +28,16 @@ private HappyHttpClient() { AutomaticDecompression = DecompressionMethods.All, ConnectCallback = this.SharedHappyEyeballsCallback.ConnectCallback, - }); + }) + { + DefaultRequestHeaders = + { + UserAgent = + { + new ProductInfoHeaderValue("Dalamud", Util.AssemblyVersion), + }, + }, + }; } /// diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs index ff6b045be..9a651c64e 100644 --- a/Dalamud/Plugin/Internal/PluginManager.cs +++ b/Dalamud/Plugin/Internal/PluginManager.cs @@ -5,6 +5,8 @@ using System.IO; using System.IO.Compression; using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; using System.Reflection; using System.Threading; using System.Threading.Tasks; @@ -1196,7 +1198,17 @@ public string GetBanReason(PluginManifest manifest) private async Task DownloadPluginAsync(RemotePluginManifest repoManifest, bool useTesting) { var downloadUrl = useTesting ? repoManifest.DownloadLinkTesting : repoManifest.DownloadLinkInstall; - var response = await this.happyHttpClient.SharedHttpClient.GetAsync(downloadUrl); + var request = new HttpRequestMessage(HttpMethod.Get, downloadUrl) + { + Headers = + { + Accept = + { + new MediaTypeWithQualityHeaderValue("application/zip"), + }, + }, + }; + var response = await this.happyHttpClient.SharedHttpClient.SendAsync(request); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStreamAsync();