diff --git a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/DependencyInjection.cs b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/DependencyInjection.cs index 0e2a2cbc..56e2d8c5 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/DependencyInjection.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/DependencyInjection.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. using CommunityToolkit.Mvvm.Messaging; +using Microsoft.Extensions.Http; using Snap.Hutao.Core.IO.Http.Proxy; using Snap.Hutao.Core.Logging; using Snap.Hutao.Service; @@ -33,7 +34,7 @@ internal static class DependencyInjection .AddJsonOptions() .AddDatabase() .AddInjections() - .AddHttpClients() + .AddAllHttpClients() // Discrete services .AddSingleton() @@ -43,7 +44,6 @@ internal static class DependencyInjection serviceProvider.InitializeConsoleWindow(); serviceProvider.InitializeCulture(); - serviceProvider.InitializedDynamicHttpProxy(); return serviceProvider; } @@ -70,9 +70,4 @@ internal static class DependencyInjection { _ = serviceProvider.GetRequiredService(); } - - private static void InitializedDynamicHttpProxy(this IServiceProvider serviceProvider) - { - HttpClient.DefaultProxy = serviceProvider.GetRequiredService(); - } } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocHttpClientConfiguration.cs b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocHttpClientConfiguration.cs index de15b6d4..feff54e6 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocHttpClientConfiguration.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/DependencyInjection/IocHttpClientConfiguration.cs @@ -1,6 +1,7 @@ // Copyright (c) DGP Studio. All rights reserved. // Licensed under the MIT license. +using Snap.Hutao.Core.IO.Http.Proxy; using Snap.Hutao.Web.Hoyolab; using System.Net.Http; @@ -14,12 +15,26 @@ internal static partial class IocHttpClientConfiguration { private const string ApplicationJson = "application/json"; - /// - /// 添加 - /// 此方法将会自动生成 - /// - /// 集合 - /// 可继续操作的集合 + public static IServiceCollection AddAllHttpClients(this IServiceCollection services) + { + services + .ConfigureHttpClientDefaults(clientBuilder => + { + clientBuilder + .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler()) + .ConfigurePrimaryHttpMessageHandler((handler, provider) => + { + HttpClientHandler clientHandler = (HttpClientHandler)handler; + clientHandler.UseProxy = true; + clientHandler.Proxy = provider.GetRequiredService(); + }); + }) + .AddHttpClients(); + + return services; + } + + [EditorBrowsable(EditorBrowsableState.Never)] public static partial IServiceCollection AddHttpClients(this IServiceCollection services); /// diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs index c8fd4c78..fde8196b 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Windowing/HotKey/HotKeyController.cs @@ -40,7 +40,8 @@ internal sealed partial class HotKeyController : IHotKeyController private static unsafe INPUT CreateInputForMouseEvent(MOUSE_EVENT_FLAGS flags) { - INPUT input = new() { type = INPUT_TYPE.INPUT_MOUSE, }; + INPUT input = default; + input.type = INPUT_TYPE.INPUT_MOUSE; input.Anonymous.mi.dwFlags = flags; return input; } diff --git a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj index 953e7b6c..f227e789 100644 --- a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj +++ b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj @@ -324,7 +324,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Snap.Hutao/Snap.Hutao/Win32/AdvApi32.cs b/src/Snap.Hutao/Snap.Hutao/Win32/AdvApi32.cs index 754f8ce8..58e2ec54 100644 --- a/src/Snap.Hutao/Snap.Hutao/Win32/AdvApi32.cs +++ b/src/Snap.Hutao/Snap.Hutao/Win32/AdvApi32.cs @@ -28,7 +28,7 @@ internal static class AdvApi32 [DllImport("ADVAPI32.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] [SupportedOSPlatform("windows5.1.2600")] - public static unsafe extern BOOL ConvertStringSidToSidW(PCWSTR StringSid, [Out] PSID* Sid); + public static unsafe extern BOOL ConvertStringSidToSidW(PCWSTR StringSid, PSID* Sid); public static unsafe BOOL ConvertStringSidToSidW(ReadOnlySpan StringSid, out PSID Sid) {