ScannerServiceCollectionExtensions.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using FastGithub.Scanner;
  2. using FastGithub.Scanner.Middlewares;
  3. using Microsoft.Extensions.Configuration;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using System.Threading.Tasks;
  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. return services
  23. .AddHttpClient()
  24. .AddSingleton(serviceProvider =>
  25. {
  26. return new GithubScanBuilder(serviceProvider, ctx => Task.CompletedTask)
  27. .Use<ConcurrentMiddleware>()
  28. .Use<PortScanMiddleware>()
  29. .Use<HttpsScanMiddleware>()
  30. .Use<ScanOkLogMiddleware>()
  31. .Build();
  32. })
  33. .AddServiceAndOptions(assembly, configuration)
  34. .AddHostedService<GithubFullScanHostedService>()
  35. .AddHostedService<GithubResultScanHostedService>()
  36. ;
  37. }
  38. }
  39. }