public static IHostBuilder SetupHost() { return(new HostBuilder() .ConfigureServices((hostContext, services) => { // Add Ringleader with our contextual factory and handler factory services.AddRingleader() .WithContextualClientFactory <MyHttpClientFactory, MyHttpClient, string>() .WithPrimaryHandlerFactory <TestingPrimaryHandlerFactory>() .Build(); // Configure a sample repository of certificates that our primary handler factory can use var myCertificateProvider = new MyCertificateProvider(); myCertificateProvider.SetCertificate(new X509Certificate2("./DummyCertificates/dummy_cert1.pem"), DUMMY_1); myCertificateProvider.SetCertificate(new X509Certificate2("./DummyCertificates/dummy_cert2.pem"), DUMMY_2); services.AddSingleton <MyCertificateProvider>(myCertificateProvider); // Add our testing evaluation singleton to monitor handler construction and execution of the delegating handler pipeline services.AddSingleton <TestingEvaluationData>(); // Add our dummy HttpClient and attach a delegating handler that can log execution for testing services.AddTransient <TestingDelegatingHandler>(); services.AddHttpClient <MyHttpClient>() .AddHttpMessageHandler <TestingDelegatingHandler>(); })); }
public TestingPrimaryHandlerFactory(MyCertificateProvider myCertificateProvider, TestingEvaluationData primaryHandlerReference) { _myCertificateProvider = myCertificateProvider ?? throw new ArgumentNullException(nameof(myCertificateProvider)); _primaryHandlerReference = primaryHandlerReference ?? throw new ArgumentNullException(nameof(TestingEvaluationData)); }