Ejemplo n.º 1
0
        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));
        }