mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-20 15:34:24 +01:00
Use HttpClientFactory for coinaverage
This commit is contained in:
@@ -1711,7 +1711,7 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
private static BTCPayRateProviderFactory CreateBTCPayRateFactory(BTCPayNetworkProvider provider)
|
private static BTCPayRateProviderFactory CreateBTCPayRateFactory(BTCPayNetworkProvider provider)
|
||||||
{
|
{
|
||||||
return new BTCPayRateProviderFactory(new MemoryCacheOptions() { ExpirationScanFrequency = TimeSpan.FromSeconds(1.0) }, provider, new CoinAverageSettings());
|
return new BTCPayRateProviderFactory(new MemoryCacheOptions() { ExpirationScanFrequency = TimeSpan.FromSeconds(1.0) }, null, provider, new CoinAverageSettings());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ namespace BTCPayServer.Hosting
|
|||||||
var factory = provider.GetRequiredService<ApplicationDbContextFactory>();
|
var factory = provider.GetRequiredService<ApplicationDbContextFactory>();
|
||||||
factory.ConfigureBuilder(o);
|
factory.ConfigureBuilder(o);
|
||||||
});
|
});
|
||||||
|
services.AddHttpClient();
|
||||||
services.TryAddSingleton<SettingsRepository>();
|
services.TryAddSingleton<SettingsRepository>();
|
||||||
services.TryAddSingleton<InvoicePaymentNotification>();
|
services.TryAddSingleton<InvoicePaymentNotification>();
|
||||||
services.TryAddSingleton<BTCPayServerOptions>(o => o.GetRequiredService<IOptions<BTCPayServerOptions>>().Value);
|
services.TryAddSingleton<BTCPayServerOptions>(o => o.GetRequiredService<IOptions<BTCPayServerOptions>>().Value);
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ namespace BTCPayServer.Services.Rates
|
|||||||
}
|
}
|
||||||
IMemoryCache _Cache;
|
IMemoryCache _Cache;
|
||||||
private IOptions<MemoryCacheOptions> _CacheOptions;
|
private IOptions<MemoryCacheOptions> _CacheOptions;
|
||||||
|
private readonly IHttpClientFactory _httpClientFactory;
|
||||||
|
|
||||||
public IMemoryCache Cache
|
public IMemoryCache Cache
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -45,6 +47,7 @@ namespace BTCPayServer.Services.Rates
|
|||||||
}
|
}
|
||||||
CoinAverageSettings _CoinAverageSettings;
|
CoinAverageSettings _CoinAverageSettings;
|
||||||
public BTCPayRateProviderFactory(IOptions<MemoryCacheOptions> cacheOptions,
|
public BTCPayRateProviderFactory(IOptions<MemoryCacheOptions> cacheOptions,
|
||||||
|
IHttpClientFactory httpClientFactory,
|
||||||
BTCPayNetworkProvider btcpayNetworkProvider,
|
BTCPayNetworkProvider btcpayNetworkProvider,
|
||||||
CoinAverageSettings coinAverageSettings)
|
CoinAverageSettings coinAverageSettings)
|
||||||
{
|
{
|
||||||
@@ -53,6 +56,7 @@ namespace BTCPayServer.Services.Rates
|
|||||||
_CoinAverageSettings = coinAverageSettings;
|
_CoinAverageSettings = coinAverageSettings;
|
||||||
_Cache = new MemoryCache(cacheOptions);
|
_Cache = new MemoryCache(cacheOptions);
|
||||||
_CacheOptions = cacheOptions;
|
_CacheOptions = cacheOptions;
|
||||||
|
_httpClientFactory = httpClientFactory;
|
||||||
// We use 15 min because of limits with free version of bitcoinaverage
|
// We use 15 min because of limits with free version of bitcoinaverage
|
||||||
CacheSpan = TimeSpan.FromMinutes(15.0);
|
CacheSpan = TimeSpan.FromMinutes(15.0);
|
||||||
this.btcpayNetworkProvider = btcpayNetworkProvider;
|
this.btcpayNetworkProvider = btcpayNetworkProvider;
|
||||||
@@ -73,7 +77,7 @@ namespace BTCPayServer.Services.Rates
|
|||||||
// Handmade providers
|
// Handmade providers
|
||||||
DirectProviders.Add("bitpay", new BitpayRateProvider(new NBitpayClient.Bitpay(new NBitcoin.Key(), new Uri("https://bitpay.com/"))));
|
DirectProviders.Add("bitpay", new BitpayRateProvider(new NBitpayClient.Bitpay(new NBitcoin.Key(), new Uri("https://bitpay.com/"))));
|
||||||
DirectProviders.Add(QuadrigacxRateProvider.QuadrigacxName, new QuadrigacxRateProvider());
|
DirectProviders.Add(QuadrigacxRateProvider.QuadrigacxName, new QuadrigacxRateProvider());
|
||||||
DirectProviders.Add(CoinAverageRateProvider.CoinAverageName, new CoinAverageRateProvider() { Exchange = CoinAverageRateProvider.CoinAverageName, Authenticator = _CoinAverageSettings });
|
DirectProviders.Add(CoinAverageRateProvider.CoinAverageName, new CoinAverageRateProvider() { Exchange = CoinAverageRateProvider.CoinAverageName, HttpClient = _httpClientFactory?.CreateClient(), Authenticator = _CoinAverageSettings });
|
||||||
|
|
||||||
// Those exchanges make multiple requests when calling GetTickers so we remove them
|
// Those exchanges make multiple requests when calling GetTickers so we remove them
|
||||||
//DirectProviders.Add("kraken", new ExchangeSharpRateProvider("kraken", new ExchangeKrakenAPI(), true));
|
//DirectProviders.Add("kraken", new ExchangeSharpRateProvider("kraken", new ExchangeKrakenAPI(), true));
|
||||||
@@ -194,6 +198,7 @@ namespace BTCPayServer.Services.Rates
|
|||||||
providers.Add(new CoinAverageRateProvider()
|
providers.Add(new CoinAverageRateProvider()
|
||||||
{
|
{
|
||||||
Exchange = exchangeName,
|
Exchange = exchangeName,
|
||||||
|
HttpClient = _httpClientFactory?.CreateClient(),
|
||||||
Authenticator = _CoinAverageSettings
|
Authenticator = _CoinAverageSettings
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,6 +56,19 @@ namespace BTCPayServer.Services.Rates
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HttpClient HttpClient
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _LocalClient ?? _Client;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_LocalClient = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
HttpClient _LocalClient;
|
||||||
static HttpClient _Client = new HttpClient();
|
static HttpClient _Client = new HttpClient();
|
||||||
|
|
||||||
public string Exchange { get; set; } = CoinAverageName;
|
public string Exchange { get; set; } = CoinAverageName;
|
||||||
@@ -107,7 +120,7 @@ namespace BTCPayServer.Services.Rates
|
|||||||
{
|
{
|
||||||
await auth.AddHeader(request);
|
await auth.AddHeader(request);
|
||||||
}
|
}
|
||||||
var resp = await _Client.SendAsync(request);
|
var resp = await HttpClient.SendAsync(request);
|
||||||
using (resp)
|
using (resp)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -150,7 +163,7 @@ namespace BTCPayServer.Services.Rates
|
|||||||
{
|
{
|
||||||
await auth.AddHeader(request);
|
await auth.AddHeader(request);
|
||||||
}
|
}
|
||||||
var resp = await _Client.SendAsync(request);
|
var resp = await HttpClient.SendAsync(request);
|
||||||
resp.EnsureSuccessStatusCode();
|
resp.EnsureSuccessStatusCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +175,7 @@ namespace BTCPayServer.Services.Rates
|
|||||||
{
|
{
|
||||||
await auth.AddHeader(request);
|
await auth.AddHeader(request);
|
||||||
}
|
}
|
||||||
var resp = await _Client.SendAsync(request);
|
var resp = await HttpClient.SendAsync(request);
|
||||||
resp.EnsureSuccessStatusCode();
|
resp.EnsureSuccessStatusCode();
|
||||||
var jobj = JObject.Parse(await resp.Content.ReadAsStringAsync());
|
var jobj = JObject.Parse(await resp.Content.ReadAsStringAsync());
|
||||||
var response = new GetRateLimitsResponse();
|
var response = new GetRateLimitsResponse();
|
||||||
@@ -193,7 +206,7 @@ namespace BTCPayServer.Services.Rates
|
|||||||
{
|
{
|
||||||
await auth.AddHeader(request);
|
await auth.AddHeader(request);
|
||||||
}
|
}
|
||||||
var resp = await _Client.SendAsync(request);
|
var resp = await HttpClient.SendAsync(request);
|
||||||
resp.EnsureSuccessStatusCode();
|
resp.EnsureSuccessStatusCode();
|
||||||
var jobj = JObject.Parse(await resp.Content.ReadAsStringAsync());
|
var jobj = JObject.Parse(await resp.Content.ReadAsStringAsync());
|
||||||
var response = new GetExchangeTickersResponse();
|
var response = new GetExchangeTickersResponse();
|
||||||
|
|||||||
Reference in New Issue
Block a user