From f125bc88b0b5e88be52cf9e8c00acb0bef19415a Mon Sep 17 00:00:00 2001 From: Jonnern <10881387+Jonnern@users.noreply.github.com> Date: Mon, 15 Dec 2025 16:33:06 +0100 Subject: [PATCH] Pass CancellationToken to Content.ReadAsStreamAsync (#262) --- .../TestImplementations/TestRestClient.cs | 4 ++-- CryptoExchange.Net/Clients/RestApiClient.cs | 2 +- CryptoExchange.Net/Interfaces/IResponse.cs | 3 ++- CryptoExchange.Net/Requests/Response.cs | 13 +++++++++---- .../Testing/Implementations/TestResponse.cs | 3 ++- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs index 73d8d5e..f81ce43 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/TestRestClient.cs @@ -49,7 +49,7 @@ namespace CryptoExchange.Net.UnitTests.TestImplementations var response = new Mock(); response.Setup(c => c.IsSuccessStatusCode).Returns(true); - response.Setup(c => c.GetResponseStreamAsync()).Returns(Task.FromResult((Stream)responseStream)); + response.Setup(c => c.GetResponseStreamAsync(It.IsAny())).Returns(Task.FromResult((Stream)responseStream)); var headers = new Dictionary(); var request = new Mock(); @@ -108,7 +108,7 @@ namespace CryptoExchange.Net.UnitTests.TestImplementations var response = new Mock(); response.Setup(c => c.IsSuccessStatusCode).Returns(false); - response.Setup(c => c.GetResponseStreamAsync()).Returns(Task.FromResult((Stream)responseStream)); + response.Setup(c => c.GetResponseStreamAsync(It.IsAny())).Returns(Task.FromResult((Stream)responseStream)); var headers = new List>(); var request = new Mock(); diff --git a/CryptoExchange.Net/Clients/RestApiClient.cs b/CryptoExchange.Net/Clients/RestApiClient.cs index d035907..cb42254 100644 --- a/CryptoExchange.Net/Clients/RestApiClient.cs +++ b/CryptoExchange.Net/Clients/RestApiClient.cs @@ -443,7 +443,7 @@ namespace CryptoExchange.Net.Clients { response = await request.GetResponseAsync(cancellationToken).ConfigureAwait(false); sw.Stop(); - responseStream = await response.GetResponseStreamAsync().ConfigureAwait(false); + responseStream = await response.GetResponseStreamAsync(cancellationToken).ConfigureAwait(false); var outputOriginalData = ApiOptions.OutputOriginalData ?? ClientOptions.OutputOriginalData; accessor = CreateAccessor(); diff --git a/CryptoExchange.Net/Interfaces/IResponse.cs b/CryptoExchange.Net/Interfaces/IResponse.cs index cc853e7..e8d9346 100644 --- a/CryptoExchange.Net/Interfaces/IResponse.cs +++ b/CryptoExchange.Net/Interfaces/IResponse.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Net; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.Interfaces @@ -40,7 +41,7 @@ namespace CryptoExchange.Net.Interfaces /// Get the response stream /// /// - Task GetResponseStreamAsync(); + Task GetResponseStreamAsync(CancellationToken cancellationToken); /// /// Close the response diff --git a/CryptoExchange.Net/Requests/Response.cs b/CryptoExchange.Net/Requests/Response.cs index f620d14..61f53ee 100644 --- a/CryptoExchange.Net/Requests/Response.cs +++ b/CryptoExchange.Net/Requests/Response.cs @@ -1,11 +1,12 @@ -using System; +using CryptoExchange.Net.Interfaces; +using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; +using System.Threading; using System.Threading.Tasks; -using CryptoExchange.Net.Interfaces; namespace CryptoExchange.Net.Requests { @@ -41,9 +42,13 @@ namespace CryptoExchange.Net.Requests } /// - public async Task GetResponseStreamAsync() + public async Task GetResponseStreamAsync(CancellationToken cancellationToken) { - return await _response.Content.ReadAsStreamAsync().ConfigureAwait(false); + #if NET5_0_OR_GREATER + return await _response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false); + #else + return await _response.Content.ReadAsStreamAsync().ConfigureAwait(false); + #endif } /// diff --git a/CryptoExchange.Net/Testing/Implementations/TestResponse.cs b/CryptoExchange.Net/Testing/Implementations/TestResponse.cs index ced090b..1666336 100644 --- a/CryptoExchange.Net/Testing/Implementations/TestResponse.cs +++ b/CryptoExchange.Net/Testing/Implementations/TestResponse.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Net; +using System.Threading; using System.Threading.Tasks; namespace CryptoExchange.Net.Testing.Implementations @@ -32,6 +33,6 @@ namespace CryptoExchange.Net.Testing.Implementations { } - public Task GetResponseStreamAsync() => Task.FromResult(_response); + public Task GetResponseStreamAsync(CancellationToken cancellationToken) => Task.FromResult(_response); } }