diff --git a/BTCPayServer.Rating/Providers/BTCTurkRateProvider.cs b/BTCPayServer.Rating/Providers/BTCTurkRateProvider.cs index 67d43ed72..308661c6c 100644 --- a/BTCPayServer.Rating/Providers/BTCTurkRateProvider.cs +++ b/BTCPayServer.Rating/Providers/BTCTurkRateProvider.cs @@ -29,7 +29,7 @@ namespace BTCPayServer.Rating.Providers public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://api.btcturk.com/api/v2/ticker", cancellationToken); + using var response = await _httpClient.GetAsync("https://api.btcturk.com/api/v2/ticker", cancellationToken); var jarray = (JArray)(await response.Content.ReadAsAsync(cancellationToken))["data"]; var tickers = jarray.ToObject(); return tickers diff --git a/BTCPayServer.Rating/Providers/BitbankRateProvider.cs b/BTCPayServer.Rating/Providers/BitbankRateProvider.cs index 50c609d06..94f0293c5 100644 --- a/BTCPayServer.Rating/Providers/BitbankRateProvider.cs +++ b/BTCPayServer.Rating/Providers/BitbankRateProvider.cs @@ -21,7 +21,7 @@ namespace BTCPayServer.Services.Rates public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://public.bitbank.cc/tickers", cancellationToken); + using var response = await _httpClient.GetAsync("https://public.bitbank.cc/tickers", cancellationToken); var jobj = await response.Content.ReadAsAsync(cancellationToken); var data = jobj.ContainsKey("data") ? jobj["data"] : null; if (jobj["success"]?.Value() != 1) diff --git a/BTCPayServer.Rating/Providers/BitflyerRateProvider.cs b/BTCPayServer.Rating/Providers/BitflyerRateProvider.cs index d05a4d4da..4cdc845ea 100644 --- a/BTCPayServer.Rating/Providers/BitflyerRateProvider.cs +++ b/BTCPayServer.Rating/Providers/BitflyerRateProvider.cs @@ -19,7 +19,7 @@ namespace BTCPayServer.Services.Rates public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://api.bitflyer.jp/v1/ticker", cancellationToken); + using var response = await _httpClient.GetAsync("https://api.bitflyer.jp/v1/ticker", cancellationToken); var jobj = await response.Content.ReadAsAsync(cancellationToken); if (jobj.Property("error_message")?.Value?.Value() is string err) { diff --git a/BTCPayServer.Rating/Providers/BitpayRateProvider.cs b/BTCPayServer.Rating/Providers/BitpayRateProvider.cs index a886654f1..f4a5b8e42 100644 --- a/BTCPayServer.Rating/Providers/BitpayRateProvider.cs +++ b/BTCPayServer.Rating/Providers/BitpayRateProvider.cs @@ -19,7 +19,9 @@ namespace BTCPayServer.Services.Rates public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://bitpay.com/rates", cancellationToken); + using var response = await _httpClient.GetAsync("https://bitpay.com/rates", cancellationToken); + if (response.Content.Headers.ContentType?.MediaType is not "application/json") + throw new HttpRequestException($"Unexpected content type when querying currency rates from Bitpay ({response.Content.Headers.ContentType?.MediaType})"); var jarray = (JArray)(await response.Content.ReadAsAsync(cancellationToken))["data"]; return jarray .Children() diff --git a/BTCPayServer.Rating/Providers/BudaRateProvider.cs b/BTCPayServer.Rating/Providers/BudaRateProvider.cs index b7846f0a8..4947b9eca 100644 --- a/BTCPayServer.Rating/Providers/BudaRateProvider.cs +++ b/BTCPayServer.Rating/Providers/BudaRateProvider.cs @@ -18,7 +18,7 @@ public class BudaRateProvider : IRateProvider public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://www.buda.com/api/v2/markets/btc-clp/ticker", cancellationToken); + using var response = await _httpClient.GetAsync("https://www.buda.com/api/v2/markets/btc-clp/ticker", cancellationToken); var jobj = await response.Content.ReadAsAsync(cancellationToken); var minAsk = jobj["ticker"]["min_ask"][0].Value(); var maxBid = jobj["ticker"]["max_bid"][0].Value(); diff --git a/BTCPayServer.Rating/Providers/ByllsRateProvider.cs b/BTCPayServer.Rating/Providers/ByllsRateProvider.cs index d589c56d3..7addd68df 100644 --- a/BTCPayServer.Rating/Providers/ByllsRateProvider.cs +++ b/BTCPayServer.Rating/Providers/ByllsRateProvider.cs @@ -18,7 +18,7 @@ namespace BTCPayServer.Services.Rates public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://bylls.com/api/price?from_currency=BTC&to_currency=CAD", cancellationToken); + using var response = await _httpClient.GetAsync("https://bylls.com/api/price?from_currency=BTC&to_currency=CAD", cancellationToken); var jobj = await response.Content.ReadAsAsync(cancellationToken); var value = jobj["public_price"]["to_price"].Value(); return new[] { new PairRate(new CurrencyPair("BTC", "CAD"), new BidAsk(value)) }; diff --git a/BTCPayServer.Rating/Providers/CryptoMarketExchangeRateProvider.cs b/BTCPayServer.Rating/Providers/CryptoMarketExchangeRateProvider.cs index db0ae14a2..58c5bcdc0 100644 --- a/BTCPayServer.Rating/Providers/CryptoMarketExchangeRateProvider.cs +++ b/BTCPayServer.Rating/Providers/CryptoMarketExchangeRateProvider.cs @@ -28,7 +28,7 @@ namespace BTCPayServer.Services.Rates public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://api.exchange.cryptomkt.com/api/3/public/ticker/", cancellationToken); + using var response = await _httpClient.GetAsync("https://api.exchange.cryptomkt.com/api/3/public/ticker/", cancellationToken); var jobj = await response.Content.ReadAsAsync(cancellationToken); return ((jobj as JObject) ?? new JObject()) diff --git a/BTCPayServer.Rating/Providers/FreeCurrencyRatesRateProvider.cs b/BTCPayServer.Rating/Providers/FreeCurrencyRatesRateProvider.cs index 29f342f29..ea3b12e33 100644 --- a/BTCPayServer.Rating/Providers/FreeCurrencyRatesRateProvider.cs +++ b/BTCPayServer.Rating/Providers/FreeCurrencyRatesRateProvider.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Net.Http; using System.Threading; using System.Threading.Tasks; @@ -18,7 +18,7 @@ public class FreeCurrencyRatesRateProvider : IRateProvider public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync(RateSourceInfo.Url, cancellationToken); + using var response = await _httpClient.GetAsync(RateSourceInfo.Url, cancellationToken); response.EnsureSuccessStatusCode(); var jobj = await response.Content.ReadAsAsync(cancellationToken); var results = (JObject) jobj["btc"] ; diff --git a/BTCPayServer.Rating/Providers/HitBTCRateProvider.cs b/BTCPayServer.Rating/Providers/HitBTCRateProvider.cs index e41152766..001b7f7e4 100644 --- a/BTCPayServer.Rating/Providers/HitBTCRateProvider.cs +++ b/BTCPayServer.Rating/Providers/HitBTCRateProvider.cs @@ -21,7 +21,7 @@ namespace BTCPayServer.Rating public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://api.hitbtc.com/api/2/public/ticker", cancellationToken); + using var response = await _httpClient.GetAsync("https://api.hitbtc.com/api/2/public/ticker", cancellationToken); var jarray = await response.Content.ReadAsAsync(cancellationToken); return jarray .Children() diff --git a/BTCPayServer.Rating/Providers/KrakenExchangeRateProvider.cs b/BTCPayServer.Rating/Providers/KrakenExchangeRateProvider.cs index fd5061fba..7ca1bd0bd 100644 --- a/BTCPayServer.Rating/Providers/KrakenExchangeRateProvider.cs +++ b/BTCPayServer.Rating/Providers/KrakenExchangeRateProvider.cs @@ -172,7 +172,7 @@ namespace BTCPayServer.Services.Rates sb.Append(String.Join('&', payload.Select(kv => $"{kv.Key}={kv.Value}").OfType().ToArray())); } var request = new HttpRequestMessage(HttpMethod.Get, sb.ToString()); - var response = await HttpClient.SendAsync(request, cancellationToken); + using var response = await HttpClient.SendAsync(request, cancellationToken); string stringResult = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(stringResult); if (result is JToken json) diff --git a/BTCPayServer.Rating/Providers/RipioExchangeProvider.cs b/BTCPayServer.Rating/Providers/RipioExchangeProvider.cs index 049c63b04..f6db52ad8 100644 --- a/BTCPayServer.Rating/Providers/RipioExchangeProvider.cs +++ b/BTCPayServer.Rating/Providers/RipioExchangeProvider.cs @@ -21,7 +21,7 @@ namespace BTCPayServer.Services.Rates } public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://api.ripiotrade.co/v4/public/tickers", cancellationToken); + using var response = await _httpClient.GetAsync("https://api.ripiotrade.co/v4/public/tickers", cancellationToken); response.EnsureSuccessStatusCode(); var jarray = (JArray)(await response.Content.ReadAsAsync(cancellationToken))["data"]; return jarray diff --git a/BTCPayServer.Rating/Providers/YadioRateProvider.cs b/BTCPayServer.Rating/Providers/YadioRateProvider.cs index 1d327d2f9..ed1652583 100644 --- a/BTCPayServer.Rating/Providers/YadioRateProvider.cs +++ b/BTCPayServer.Rating/Providers/YadioRateProvider.cs @@ -23,7 +23,7 @@ namespace BTCPayServer.Services.Rates public async Task GetRatesAsync(CancellationToken cancellationToken) { - var response = await _httpClient.GetAsync("https://api.yadio.io/exrates/BTC", cancellationToken); + using var response = await _httpClient.GetAsync("https://api.yadio.io/exrates/BTC", cancellationToken); response.EnsureSuccessStatusCode(); var jobj = await response.Content.ReadAsAsync(cancellationToken); var results = jobj["BTC"]; diff --git a/BTCPayServer.Tests/FastTests.cs b/BTCPayServer.Tests/FastTests.cs index d0483da22..19dbde8eb 100644 --- a/BTCPayServer.Tests/FastTests.cs +++ b/BTCPayServer.Tests/FastTests.cs @@ -2110,6 +2110,7 @@ Assert.Equal("2b0e251e", nunchuk.AccountKeySettings[1].RootFingerprint.ToString( [Fact] public void AllPoliciesShowInUI() { + var a = new BitpayRateProvider(new System.Net.Http.HttpClient()).GetRatesAsync(default).Result; foreach (var policy in Policies.AllPolicies) { Assert.True(UIManageController.AddApiKeyViewModel.PermissionValueItem.PermissionDescriptions.ContainsKey(policy));