ScannerServiceCollectionExtensions.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using FastGithub.Scanner;
  2. using Microsoft.Extensions.Configuration;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using System;
  5. using System.Net.Http.Headers;
  6. namespace FastGithub
  7. {
  8. /// <summary>
  9. /// 服务注册扩展
  10. /// </summary>
  11. public static class ScannerServiceCollectionExtensions
  12. {
  13. /// <summary>
  14. /// 注册程序集下所有服务下选项
  15. /// </summary>
  16. /// <param name="services"></param>
  17. /// <param name="configuration">配置</param>
  18. /// <returns></returns>
  19. public static IServiceCollection AddGithubScanner(this IServiceCollection services, IConfiguration configuration)
  20. {
  21. var assembly = typeof(ScannerServiceCollectionExtensions).Assembly;
  22. var defaultUserAgent = new ProductInfoHeaderValue(assembly.GetName().Name ?? nameof(FastGithub), assembly.GetName().Version?.ToString());
  23. services
  24. .AddHttpClient(nameof(Scanner))
  25. .SetHandlerLifetime(TimeSpan.FromMinutes(5d))
  26. .ConfigureHttpClient(httpClient =>
  27. {
  28. httpClient.Timeout = TimeSpan.FromSeconds(10d);
  29. httpClient.DefaultRequestHeaders.Accept.TryParseAdd("*/*");
  30. httpClient.DefaultRequestHeaders.UserAgent.Add(defaultUserAgent);
  31. })
  32. .ConfigurePrimaryHttpMessageHandler((serviceProvider) =>
  33. {
  34. return serviceProvider.GetRequiredService<GithubHttpClientHanlder>();
  35. });
  36. return services
  37. .AddMemoryCache()
  38. .AddServiceAndOptions(assembly, configuration)
  39. .AddHostedService<GithubFullScanHostedService>()
  40. .AddHostedService<GithubResultScanHostedService>();
  41. ;
  42. }
  43. }
  44. }