using FastGithub.Scanner;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
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(Scanner))
.SetHandlerLifetime(TimeSpan.FromMinutes(5d))
.ConfigureHttpClient(httpClient =>
{
httpClient.Timeout = TimeSpan.FromSeconds(10d);
httpClient.DefaultRequestHeaders.Accept.TryParseAdd("*/*");
httpClient.DefaultRequestHeaders.UserAgent.Add(defaultUserAgent);
})
.ConfigurePrimaryHttpMessageHandler((serviceProvider) =>
{
return serviceProvider.GetRequiredService();
});
return services
.AddMemoryCache()
.AddServiceAndOptions(assembly, configuration)
.AddHostedService()
.AddHostedService();
;
}
}
}