@@ -23,17 +23,18 @@ public partial class RestClient {
23
23
/// <param name="request">Request to be executed</param>
24
24
/// <param name="cancellationToken">Cancellation token</param>
25
25
public async Task < RestResponse > ExecuteAsync ( RestRequest request , CancellationToken cancellationToken = default ) {
26
- var internalResponse = await ExecuteInternal ( request , cancellationToken ) ;
26
+ var internalResponse = await ExecuteInternal ( request , cancellationToken ) . ConfigureAwait ( false ) ;
27
27
28
28
var response = new RestResponse ( ) ;
29
29
30
30
response = internalResponse . Exception == null
31
31
? await RestResponse . FromHttpResponse (
32
- internalResponse . ResponseMessage ! ,
33
- request ,
34
- CookieContainer . GetCookies ( internalResponse . Url ) ,
35
- cancellationToken
36
- )
32
+ internalResponse . ResponseMessage ! ,
33
+ request ,
34
+ CookieContainer . GetCookies ( internalResponse . Url ) ,
35
+ cancellationToken
36
+ )
37
+ . ConfigureAwait ( false )
37
38
: ReturnErrorOrThrow ( response , internalResponse . Exception , internalResponse . TimeoutToken ) ;
38
39
39
40
response . Request = request ;
@@ -47,7 +48,7 @@ async Task<InternalResponse> ExecuteInternal(RestRequest request, CancellationTo
47
48
using var requestContent = new RequestContent ( this , request ) ;
48
49
49
50
if ( Authenticator != null )
50
- await Authenticator . Authenticate ( this , request ) ;
51
+ await Authenticator . Authenticate ( this , request ) . ConfigureAwait ( false ) ;
51
52
52
53
var httpMethod = AsHttpMethod ( request . Method ) ;
53
54
var url = BuildUri ( request ) ;
@@ -67,12 +68,12 @@ async Task<InternalResponse> ExecuteInternal(RestRequest request, CancellationTo
67
68
message . AddHeaders ( headers ) ;
68
69
69
70
if ( request . OnBeforeRequest != null )
70
- await request . OnBeforeRequest ( message ) ;
71
+ await request . OnBeforeRequest ( message ) . ConfigureAwait ( false ) ;
71
72
72
- var responseMessage = await HttpClient . SendAsync ( message , request . CompletionOption , ct ) ;
73
+ var responseMessage = await HttpClient . SendAsync ( message , request . CompletionOption , ct ) . ConfigureAwait ( false ) ;
73
74
74
75
if ( request . OnAfterRequest != null )
75
- await request . OnAfterRequest ( responseMessage ) ;
76
+ await request . OnAfterRequest ( responseMessage ) . ConfigureAwait ( false ) ;
76
77
77
78
return new InternalResponse ( responseMessage , url , null , timeoutCts . Token ) ;
78
79
}
@@ -89,8 +90,9 @@ record InternalResponse(HttpResponseMessage? ResponseMessage, Uri Url, Exception
89
90
/// <param name="request">Pre-configured request instance.</param>
90
91
/// <param name="cancellationToken"></param>
91
92
/// <returns>The downloaded stream.</returns>
93
+ [ PublicAPI ]
92
94
public async Task < Stream ? > DownloadStreamAsync ( RestRequest request , CancellationToken cancellationToken = default ) {
93
- var response = await ExecuteInternal ( request , cancellationToken ) ;
95
+ var response = await ExecuteInternal ( request , cancellationToken ) . ConfigureAwait ( false ) ;
94
96
95
97
if ( response . Exception != null ) {
96
98
return Options . ThrowOnAnyError ? throw response . Exception : null ;
@@ -99,18 +101,11 @@ record InternalResponse(HttpResponseMessage? ResponseMessage, Uri Url, Exception
99
101
if ( response . ResponseMessage == null ) return null ;
100
102
101
103
if ( request . ResponseWriter != null ) {
102
- #if NETSTANDARD
103
- var stream = await response . ResponseMessage . Content . ReadAsStreamAsync ( ) ;
104
- # else
105
- var stream = await response . ResponseMessage . Content . ReadAsStreamAsync ( cancellationToken ) ;
106
- #endif
107
- return request . ResponseWriter ( stream ) ;
104
+ using var stream = await response . ResponseMessage . ReadResponse ( cancellationToken ) . ConfigureAwait ( false ) ;
105
+ return request . ResponseWriter ( stream ! ) ;
108
106
}
109
- #if NETSTANDARD
110
- return await response . ResponseMessage . Content . ReadAsStreamAsync ( ) ;
111
- # else
112
- return await response . ResponseMessage . Content . ReadAsStreamAsync ( cancellationToken ) ;
113
- #endif
107
+
108
+ return await response . ResponseMessage . ReadResponse ( cancellationToken ) . ConfigureAwait ( false ) ;
114
109
}
115
110
116
111
/// <summary>
@@ -119,35 +114,10 @@ record InternalResponse(HttpResponseMessage? ResponseMessage, Uri Url, Exception
119
114
/// <param name="request">Pre-configured request instance.</param>
120
115
/// <param name="cancellationToken"></param>
121
116
/// <returns>The downloaded file.</returns>
117
+ [ PublicAPI ]
122
118
public async Task < byte [ ] ? > DownloadDataAsync ( RestRequest request , CancellationToken cancellationToken = default ) {
123
- var response = await ExecuteInternal ( request , cancellationToken ) ;
124
-
125
- if ( response . Exception != null ) {
126
- return Options . ThrowOnAnyError ? throw response . Exception : null ;
127
- }
128
-
129
- if ( response . ResponseMessage == null ) return null ;
130
-
131
- byte [ ] ? bytes ;
132
-
133
- if ( request . ResponseWriter != null ) {
134
- #if NETSTANDARD
135
- var stream = await response . ResponseMessage . Content . ReadAsStreamAsync ( ) ;
136
- # else
137
- var stream = await response . ResponseMessage . Content . ReadAsStreamAsync ( cancellationToken ) ;
138
- #endif
139
- var converted = request . ResponseWriter ( stream ) ;
140
- bytes = converted == null ? null : await converted . ReadAsBytes ( cancellationToken ) ;
141
- }
142
- else {
143
- #if NETSTANDARD
144
- bytes = await response . ResponseMessage . Content . ReadAsByteArrayAsync ( ) ;
145
- # else
146
- bytes = await response . ResponseMessage . Content . ReadAsByteArrayAsync ( cancellationToken ) ;
147
- #endif
148
- }
149
-
150
- return bytes ;
119
+ using var stream = await DownloadStreamAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
120
+ return stream == null ? null : await stream . ReadAsBytes ( cancellationToken ) . ConfigureAwait ( false ) ;
151
121
}
152
122
153
123
RestResponse ReturnErrorOrThrow ( RestResponse response , Exception exception , CancellationToken timeoutToken ) {
0 commit comments