Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions CloudConvert.API/RestHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,17 @@ internal RestHelper(HttpClient httpClient)

internal async Task<T> RequestAsync<T>(HttpRequestMessage request, CancellationToken cancellationToken)
{
var response = await _httpClient.SendAsync(request, cancellationToken);
var responseRaw = await response.Content.ReadAsStringAsync(cancellationToken);
var response = await _httpClient.SendAsync(request, cancellationToken).ConfigureAwait(false);

// Handle empty response body (e.g., HTTP 204 No Content)
// System.Text.Json throws when trying to deserialize an empty string
if (string.IsNullOrWhiteSpace(responseRaw) || response.StatusCode == System.Net.HttpStatusCode.NoContent)
// Short-circuit earlier as 204 will never have a body to read
if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
{
return default;
}

var responseRaw = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);

if (string.IsNullOrWhiteSpace(responseRaw))
{
return default;
}
Expand All @@ -37,8 +42,8 @@ internal async Task<T> RequestAsync<T>(HttpRequestMessage request, CancellationT

internal async Task<string> RequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var response = await _httpClient.SendAsync(request, cancellationToken);
return await response.Content.ReadAsStringAsync(cancellationToken);
var response = await _httpClient.SendAsync(request, cancellationToken).ConfigureAwait(false);
return await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);
}
}
}
5 changes: 3 additions & 2 deletions CloudConvert.API/WebApiHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
{
try
{
var response = await base.SendAsync(request, cancellationToken);
var response = await base.SendAsync(request, cancellationToken).ConfigureAwait(false);

if ((int)response.StatusCode >= 400)
{
throw new WebApiException((await response.Content.ReadAsStringAsync(cancellationToken)).TrimLengthWithEllipsis(20000));
var errorBody = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);
throw new WebApiException(errorBody.TrimLengthWithEllipsis(20000));
}

return response;
Expand Down
Loading