public static IServiceCollection AddPrintlyClient( this IServiceCollection services, PrintlyClientConfiguration configuration) { services.AddHttpClient <IHttpAdapter <SystemClient>, HttpAdapter <SystemClient> > (client => { client.BaseAddress = new Uri(configuration.BaseUrl); }) .AddPolicyHandler(GetRetryPolicy( configuration.RetryCount, configuration.SleepDuration)) .SetHandlerLifetime(configuration.HttpMessageHandlerLifetime); services.AddHttpClient <IHttpAdapter <PrintersClient>, HttpAdapter <PrintersClient> >(client => { client.BaseAddress = new Uri(configuration.BaseUrl); }) .AddPolicyHandler(GetRetryPolicy( configuration.RetryCount, configuration.SleepDuration)) .SetHandlerLifetime(configuration.HttpMessageHandlerLifetime); services.AddTransient <ISystemClient, SystemClient>(); services.AddTransient <IPrintersClient, PrintersClient>(); return(services); }
public void GivenConfig_WhenAddPrintlyClient_ThenClientAddedForInjection() { // Arrange var config = new PrintlyClientConfiguration { BaseUrl = "http://www.test.com/", RetryCount = 10, SleepDuration = new System.TimeSpan(0, 1, 0), HttpMessageHandlerLifetime = new System.TimeSpan(0, 10, 0) }; var sut = new ServiceCollection(); // Act sut.AddPrintlyClient(config); var serviceProvider = sut.BuildServiceProvider(); // Assert var systemClientHttpAdapter = serviceProvider.GetService <IHttpAdapter <SystemClient> >(); Assert.Equal(config.BaseUrl, systemClientHttpAdapter.BaseUrl); Assert.NotNull(serviceProvider.GetServices <ISystemClient>()); var printersClientHttpAdapter = serviceProvider.GetService <IHttpAdapter <PrintersClient> >(); Assert.Equal(config.BaseUrl, printersClientHttpAdapter.BaseUrl); Assert.NotNull(serviceProvider.GetServices <IPrintersClient>()); }
public SystemClientTests() { var config = new PrintlyClientConfiguration { BaseUrl = "http://localhost:5000", HttpMessageHandlerLifetime = new TimeSpan(1, 0, 0), RetryCount = 3, SleepDuration = new TimeSpan(0, 0, 30) }; var serviceCollection = new ServiceCollection(); serviceCollection.AddPrintlyClient(config); _serviceProvider = serviceCollection.BuildServiceProvider(); }