diff --git a/BTCPayServer/Controllers/StoresController.Changelly.cs b/BTCPayServer/Controllers/StoresController.Changelly.cs index 16f113680..dad5dbb5f 100644 --- a/BTCPayServer/Controllers/StoresController.Changelly.cs +++ b/BTCPayServer/Controllers/StoresController.Changelly.cs @@ -1,4 +1,5 @@ using System; +using System.Net.Http; using System.Threading.Tasks; using BTCPayServer.Data; using BTCPayServer.Models.StoreViewModels; @@ -77,7 +78,7 @@ namespace BTCPayServer.Controllers case "test": try { - var client = new Changelly(_httpClientFactory, changellySettings.ApiKey, changellySettings.ApiSecret, + var client = new Changelly(_httpClientFactory.CreateClient(), changellySettings.ApiKey, changellySettings.ApiSecret, changellySettings.ApiUrl); var result = await client.GetCurrenciesFull(); vm.StatusMessage = "Test Successful"; diff --git a/BTCPayServer/ExplorerClientProvider.cs b/BTCPayServer/ExplorerClientProvider.cs index 8b546189d..6f19cf0da 100644 --- a/BTCPayServer/ExplorerClientProvider.cs +++ b/BTCPayServer/ExplorerClientProvider.cs @@ -1,4 +1,5 @@ using System; +using System.Net.Http; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Linq; @@ -7,6 +8,7 @@ using BTCPayServer.Configuration; using BTCPayServer.Logging; using NBXplorer; using BTCPayServer.HostedServices; +using System.Net.Http; namespace BTCPayServer { @@ -17,7 +19,7 @@ namespace BTCPayServer public BTCPayNetworkProvider NetworkProviders => _NetworkProviders; NBXplorerDashboard _Dashboard; - public ExplorerClientProvider(BTCPayNetworkProvider networkProviders, BTCPayServerOptions options, NBXplorerDashboard dashboard) + public ExplorerClientProvider(IHttpClientFactory httpClientFactory, BTCPayNetworkProvider networkProviders, BTCPayServerOptions options, NBXplorerDashboard dashboard) { _Dashboard = dashboard; _NetworkProviders = networkProviders; @@ -32,14 +34,15 @@ namespace BTCPayServer Logs.Configuration.LogInformation($"{setting.CryptoCode}: Cookie file is {(setting.CookieFile ?? "not set")}"); if (setting.ExplorerUri != null) { - _Clients.TryAdd(setting.CryptoCode, CreateExplorerClient(_NetworkProviders.GetNetwork(setting.CryptoCode), setting.ExplorerUri, setting.CookieFile)); + _Clients.TryAdd(setting.CryptoCode, CreateExplorerClient(httpClientFactory.CreateClient($"NBXPLORER_{setting.CryptoCode}"), _NetworkProviders.GetNetwork(setting.CryptoCode), setting.ExplorerUri, setting.CookieFile)); } } } - private static ExplorerClient CreateExplorerClient(BTCPayNetwork n, Uri uri, string cookieFile) + private static ExplorerClient CreateExplorerClient(HttpClient httpClient, BTCPayNetwork n, Uri uri, string cookieFile) { var explorer = new ExplorerClient(n.NBXplorerNetwork, uri); + explorer.SetClient(httpClient); if (cookieFile == null) { Logs.Configuration.LogWarning($"{n.CryptoCode}: Not using cookie authentication"); diff --git a/BTCPayServer/Payments/Changelly/Changelly.cs b/BTCPayServer/Payments/Changelly/Changelly.cs index 61f04b9a6..2305d7137 100644 --- a/BTCPayServer/Payments/Changelly/Changelly.cs +++ b/BTCPayServer/Payments/Changelly/Changelly.cs @@ -19,11 +19,11 @@ namespace BTCPayServer.Payments.Changelly private readonly bool _showFiat; private readonly HttpClient _httpClient; - public Changelly(IHttpClientFactory httpClientFactory, string apiKey, string apiSecret, string apiUrl, bool showFiat = true) + public Changelly(HttpClient httpClient, string apiKey, string apiSecret, string apiUrl, bool showFiat = true) { _apisecret = apiSecret; _showFiat = showFiat; - _httpClient = httpClientFactory.CreateClient(); + _httpClient = httpClient; _httpClient.BaseAddress = new Uri(apiUrl); _httpClient.DefaultRequestHeaders.Add("api-key", apiKey); } diff --git a/BTCPayServer/Payments/Changelly/ChangellyClientProvider.cs b/BTCPayServer/Payments/Changelly/ChangellyClientProvider.cs index a65cd85d4..cb490eae4 100644 --- a/BTCPayServer/Payments/Changelly/ChangellyClientProvider.cs +++ b/BTCPayServer/Payments/Changelly/ChangellyClientProvider.cs @@ -61,7 +61,7 @@ namespace BTCPayServer.Payments.Changelly throw new ChangellyException("Changelly not enabled for this store"); } - var changelly = new Changelly(_httpClientFactory, changellySettings.ApiKey, changellySettings.ApiSecret, + var changelly = new Changelly(_httpClientFactory.CreateClient("Changelly"), changellySettings.ApiKey, changellySettings.ApiSecret, changellySettings.ApiUrl, changellySettings.ShowFiat); _clientCache.AddOrReplace(storeId, changelly); return changelly; diff --git a/BTCPayServer/Services/Rates/CoinAverageRateProvider.cs b/BTCPayServer/Services/Rates/CoinAverageRateProvider.cs index f0a84e8ad..203e7105d 100644 --- a/BTCPayServer/Services/Rates/CoinAverageRateProvider.cs +++ b/BTCPayServer/Services/Rates/CoinAverageRateProvider.cs @@ -66,7 +66,7 @@ namespace BTCPayServer.Services.Rates } set { - _LocalClient = null; + _LocalClient = value; } } HttpClient _LocalClient; diff --git a/BTCPayServer/Services/Rates/KrakenExchangeRateProvider.cs b/BTCPayServer/Services/Rates/KrakenExchangeRateProvider.cs index 455e7a055..33aab5573 100644 --- a/BTCPayServer/Services/Rates/KrakenExchangeRateProvider.cs +++ b/BTCPayServer/Services/Rates/KrakenExchangeRateProvider.cs @@ -29,7 +29,7 @@ namespace BTCPayServer.Services.Rates } set { - _LocalClient = null; + _LocalClient = value; } } diff --git a/BTCPayServer/Services/Rates/RateProviderFactory.cs b/BTCPayServer/Services/Rates/RateProviderFactory.cs index 53d56cceb..d43ecbc8e 100644 --- a/BTCPayServer/Services/Rates/RateProviderFactory.cs +++ b/BTCPayServer/Services/Rates/RateProviderFactory.cs @@ -110,9 +110,9 @@ namespace BTCPayServer.Services.Rates // Handmade providers Providers.Add(QuadrigacxRateProvider.QuadrigacxName, new QuadrigacxRateProvider()); - Providers.Add(CoinAverageRateProvider.CoinAverageName, new CoinAverageRateProvider() { Exchange = CoinAverageRateProvider.CoinAverageName, HttpClient = _httpClientFactory?.CreateClient(), Authenticator = _CoinAverageSettings }); - Providers.Add("kraken", new KrakenExchangeRateProvider() { HttpClient = _httpClientFactory?.CreateClient() }); - Providers.Add("bylls", new ByllsRateProvider(_httpClientFactory?.CreateClient())); + Providers.Add(CoinAverageRateProvider.CoinAverageName, new CoinAverageRateProvider() { Exchange = CoinAverageRateProvider.CoinAverageName, HttpClient = _httpClientFactory?.CreateClient("EXCHANGE_COINAVERAGE"), Authenticator = _CoinAverageSettings }); + Providers.Add("kraken", new KrakenExchangeRateProvider() { HttpClient = _httpClientFactory?.CreateClient("EXCHANGE_KRAKEN") }); + Providers.Add("bylls", new ByllsRateProvider(_httpClientFactory?.CreateClient("EXCHANGE_BYLLS"))); // Those exchanges make multiple requests when calling GetTickers so we remove them //DirectProviders.Add("gdax", new ExchangeSharpRateProvider("gdax", new ExchangeGdaxAPI()));