private IActionResult FormatResult(HttpResponseMessage result) { if (result.StatusCode == HttpStatusCode.ServiceUnavailable) { return(NotFound(result.RequestMessage)); } var stringResult = result.Content.AsString(); _logger.LogDebug($"{_requestID} - Result StatusCode From remote API call ID: {(int)result.StatusCode} - Codename: {result.StatusCode}"); _logger.LogDebug($"{_requestID} - StringResult From remote API call: {stringResult}"); string mediaType = result.Content.Headers?.ContentType?.MediaType ?? string.Empty; var responseHandler = _responseHandlerFactory.Create(mediaType); return(responseHandler.BuildResult((int)result.StatusCode, stringResult)); }
private async Task <T> ProcessRequestAsync <T>(HttpRequestMessage request) where T : class { var result = await _client.SendAsync(request); if (result.StatusCode == HttpStatusCode.NotFound && ReturnDefaultOn404) { return(default(T)); } if (!result.IsSuccessStatusCode) { throw new CollaborationException($"Failed to process request. StatusCode={result.StatusCode}, Reason={result.ReasonPhrase}, Method={request.Method}, Url={request.RequestUri}") { StatusCode = (int)result.StatusCode, ReasonPhrase = result.ReasonPhrase }; } var handler = _responseHandlerFactory.Create(typeof(T)); return(await handler.ReadContent <T>(result)); }