in common/src/service/HttpClientHelper.cs [87:159]
public async Task<T> GetAsync<T>(
Uri requestUri,
TimeSpan operationTimeout,
IDictionary<HttpStatusCode, Func<HttpResponseMessage, Task<Exception>>> errorMappingOverrides,
IDictionary<string, string> customHeaders,
bool throwIfNotFound,
CancellationToken cancellationToken)
{
T result = default;
if (operationTimeout != _defaultOperationTimeout && operationTimeout > TimeSpan.Zero)
{
if (throwIfNotFound)
{
await ExecuteWithCustomOperationTimeoutAsync(
HttpMethod.Get,
new Uri(_baseAddress, requestUri),
operationTimeout,
(requestMsg, token) => AddCustomHeaders(requestMsg, customHeaders),
IsMappedToException,
async (message, token) => result = await ReadResponseMessageAsync<T>(message, token).ConfigureAwait(false),
errorMappingOverrides,
cancellationToken)
.ConfigureAwait(false);
}
else
{
await ExecuteWithCustomOperationTimeoutAsync(
HttpMethod.Get,
new Uri(_baseAddress, requestUri),
operationTimeout,
(requestMsg, token) => AddCustomHeaders(requestMsg, customHeaders),
message => !(message.IsSuccessStatusCode || message.StatusCode == HttpStatusCode.NotFound),
async (message, token) => result = message.StatusCode == HttpStatusCode.NotFound
? default
: await ReadResponseMessageAsync<T>(message, token).ConfigureAwait(false),
errorMappingOverrides,
cancellationToken)
.ConfigureAwait(false);
}
}
else
{
if (throwIfNotFound)
{
await ExecuteAsync(
HttpMethod.Get,
new Uri(_baseAddress, requestUri),
(requestMsg, token) => AddCustomHeaders(requestMsg, customHeaders),
async (message, token) => result = await ReadResponseMessageAsync<T>(message, token).ConfigureAwait(false),
errorMappingOverrides,
cancellationToken)
.ConfigureAwait(false);
}
else
{
await ExecuteAsync(
_httpClientWithDefaultTimeout,
HttpMethod.Get,
new Uri(_baseAddress, requestUri),
(requestMsg, token) => AddCustomHeaders(requestMsg, customHeaders),
message => !(message.IsSuccessStatusCode || message.StatusCode == HttpStatusCode.NotFound),
async (message, token) => result = message.StatusCode == HttpStatusCode.NotFound
? default
: await ReadResponseMessageAsync<T>(message, token).ConfigureAwait(false),
errorMappingOverrides,
cancellationToken)
.ConfigureAwait(false);
}
}
return result;
}