using FastGithub.Scanner; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; using System.Net.Http; using System.Net.Http.Headers; namespace FastGithub { /// /// 服务注册扩展 /// public static class ScannerServiceCollectionExtensions { /// /// 注册程序集下所有服务下选项 /// /// /// 配置 /// public static IServiceCollection AddGithubScanner(this IServiceCollection services, IConfiguration configuration) { var assembly = typeof(ScannerServiceCollectionExtensions).Assembly; var defaultUserAgent = new ProductInfoHeaderValue(assembly.GetName().Name ?? nameof(FastGithub), assembly.GetName().Version?.ToString()); services .AddHttpClient(nameof(FastGithub)) .SetHandlerLifetime(TimeSpan.FromMinutes(5d)) .ConfigureHttpClient(httpClient => { httpClient.DefaultRequestHeaders.Accept.TryParseAdd("*/*"); httpClient.DefaultRequestHeaders.UserAgent.Add(defaultUserAgent); }) .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler { Proxy = null, UseProxy = false, AllowAutoRedirect = false }) .AddHttpMessageHandler(); return services .AddMemoryCache() .AddServiceAndOptions(assembly, configuration) .AddHostedService() .AddHostedService() .AddSingleton(appService => appService.GetRequiredService()); ; } } }