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;
}
}
}