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();
        }
Beispiel #4
0
        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>());
        }
Beispiel #5
0
        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);
 }