public IBlockchainWalletsApi CreateNew(string url, bool withCaching = true, IClientCacheManager clientCacheManager = null, params DelegatingHandler[] handlers) { var builder = new HttpClientGeneratorBuilder(url) .WithAdditionalDelegatingHandler(new UserAgentMessageHandler()); if (withCaching) { //explicit strategy declaration builder.WithCachingStrategy(new AttributeBasedCachingStrategy()); } else { //By default it is AttributeBasedCachingStrategy, so if no caching turn it off builder.WithoutCaching(); } if (handlers != null) { foreach (var handler in handlers) { builder.WithAdditionalDelegatingHandler(handler); } } clientCacheManager = clientCacheManager ?? new ClientCacheManager(); var httpClientGenerator = builder.Create(clientCacheManager); return(httpClientGenerator.Generate <IBlockchainWalletsApi>()); }
public IBlockPassClient CreateNew(string url, string apiKey, bool withCaching = true, IClientCacheManager clientCacheManager = null, params DelegatingHandler[] handlers) { var builder = new HttpClientGeneratorBuilder(url) .WithAdditionalDelegatingHandler(new ContentTypeHandler()) .WithAdditionalDelegatingHandler(new ApiKeyHeaderHandler(apiKey)) .WithAdditionalDelegatingHandler(new ResponseHandler()); if (withCaching) { //explicit strategy declaration builder.WithCachingStrategy(new AttributeBasedCachingStrategy()); } else { //By default it is AttributeBasedCachingStrategy, so if no caching turn it off builder.WithoutCaching(); } foreach (var handler in handlers) { builder.WithAdditionalDelegatingHandler(handler); } clientCacheManager = clientCacheManager ?? new ClientCacheManager(); var httpClientGenerator = builder.Create(clientCacheManager); return(httpClientGenerator.Generate <IBlockPassClient>()); }
/// <summary> /// Registers <see cref="IBitstampAdapterServiceClient"/> in Autofac container using <see cref="BitstampAdapterServiceClientSettings"/>. /// </summary> /// <param name="builder">Autofac container builder.</param> /// <param name="settings">MarketMakerReports client settings.</param> /// <param name="builderConfigure">Optional <see cref="HttpClientGeneratorBuilder"/> configure handler.</param> public static void RegisterMarketMakerReportsClient( [NotNull] this ContainerBuilder builder, [NotNull] BitstampAdapterServiceClientSettings settings, [CanBeNull] Func <HttpClientGeneratorBuilder, HttpClientGeneratorBuilder> builderConfigure) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (string.IsNullOrWhiteSpace(settings.ServiceUrl)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(BitstampAdapterServiceClientSettings.ServiceUrl)); } HttpClientGeneratorBuilder clientBuilder = HttpClientGenerator.HttpClientGenerator .BuildForUrl(settings.ServiceUrl) .WithAdditionalCallsWrapper(new ExceptionHandlerCallsWrapper()) .WithAdditionalDelegatingHandler(new ApiKeyHeaderHttpClientHandler("X-API-KEY", settings.ApiKey)); clientBuilder = builderConfigure?.Invoke(clientBuilder) ?? clientBuilder.WithoutRetries(); builder.RegisterInstance(new BitstampAdapterServiceClient(clientBuilder.Create())) .As <IBitstampAdapterServiceClient>() .SingleInstance(); }
public IBlockchainCashoutPreconditionsCheckApi CreateNew(string url, bool withCaching = true, IClientCacheManager clientCacheManager = null, params DelegatingHandler[] handlers) { if (string.IsNullOrEmpty(url)) { throw new ArgumentNullException(nameof(url)); } var builder = new HttpClientGeneratorBuilder(url); if (withCaching) { //explicit strategy declaration builder.WithCachingStrategy(new AttributeBasedCachingStrategy()); } else { //By default it is AttributeBasedCachingStrategy, so if no caching turn it off builder.WithoutCaching(); } if (handlers != null) { foreach (var handler in handlers) { builder.WithAdditionalDelegatingHandler(handler); } } clientCacheManager = clientCacheManager ?? new ClientCacheManager(); var httpClientGenerator = builder.Create(clientCacheManager); return(httpClientGenerator.Generate <IBlockchainCashoutPreconditionsCheckApi>()); }
private T CreateNewClient <T>(string adapter) { if (!_adapters.TryGetValue(adapter, out AdapterEndpoint endpoint)) { throw new ArgumentException($"No service endpoint defined for {adapter}", nameof(adapter)); } var builder = new HttpClientGeneratorBuilder(endpoint.Uri.ToString()) .WithAdditionalDelegatingHandler(new XApiKeyHandler(endpoint.XApiKey)) .WithAdditionalDelegatingHandler(new HandleBusinessExceptionsHandler()) .WithoutRetries() .Create(); return(builder.Generate <T>()); }
private static HttpClientGeneratorBuilder WithOptionalApiKey(this HttpClientGeneratorBuilder builder, string apiKey) { return(!string.IsNullOrWhiteSpace(apiKey) ? builder.WithApiKey(apiKey) : builder); }