2
0

HttpClientFactory.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using FastGithub.DomainResolve;
  2. using Microsoft.Extensions.Options;
  3. namespace FastGithub.Http
  4. {
  5. /// <summary>
  6. /// HttpClient工厂
  7. /// </summary>
  8. sealed class HttpClientFactory : IHttpClientFactory
  9. {
  10. private HttpClientHandler httpClientHanlder;
  11. /// <summary>
  12. /// HttpClient工厂
  13. /// </summary>
  14. /// <param name="domainResolver"></param>
  15. /// <param name="options"></param>
  16. public HttpClientFactory(
  17. IDomainResolver domainResolver,
  18. IOptionsMonitor<FastGithubOptions> options)
  19. {
  20. this.httpClientHanlder = new HttpClientHandler(domainResolver);
  21. options.OnChange(opt => this.httpClientHanlder = new HttpClientHandler(domainResolver));
  22. }
  23. /// <summary>
  24. /// 创建httpClient
  25. /// </summary>
  26. /// <param name="domainConfig"></param>
  27. /// <returns></returns>
  28. public HttpClient CreateHttpClient(DomainConfig domainConfig)
  29. {
  30. return new HttpClient(domainConfig, this.httpClientHanlder, disposeHandler: false);
  31. }
  32. }
  33. }