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