using System.Net; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using ZonyLrcTools.Common.Configuration; using ZonyLrcTools.Common.Infrastructure.Network; namespace ZonyLrcTools.Common.Infrastructure.DependencyInject { /// /// Service 注入的扩展方法。 /// public static class ServiceCollectionExtensions { /// /// 配置工具会用到的服务。 /// public static IServiceCollection? ConfigureToolService(this IServiceCollection? services) { if (services == null) { return null; } services.AddHttpClient(DefaultWarpHttpClient.HttpClientNameConstant) .ConfigurePrimaryHttpMessageHandler(provider => { var option = provider.GetRequiredService>().Value; return new HttpClientHandler { UseProxy = option.NetworkOptions.IsEnable, Proxy = new WebProxy($"{option.NetworkOptions.Ip}:{option.NetworkOptions.Port}") }; }); return services; } /// /// 配置工具关联的配置信息()。 /// public static IServiceCollection ConfigureConfiguration(this IServiceCollection services) { var configuration = new ConfigurationBuilder() .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) .AddYamlFile("config.yaml") .Build(); services.Configure(configuration); return services; } } }