public ProblemDetails SetAliasErrorProblemDetail(AliasErrorResponse aliasErrorResponse, HttpStatusCode httpStatusCode) { ProblemDetails = new ProblemDetails { Title = aliasErrorResponse.Reason, Detail = aliasErrorResponse.Message }; switch (httpStatusCode) { case HttpStatusCode.BadRequest: { ProblemDetails.Type = _localizer["StatusCode400RfcType"]; ProblemDetails.Status = StatusCodes.Status400BadRequest; } break; case HttpStatusCode.NotFound: { ProblemDetails.Type = _localizer["StatusCode404RfcType"]; ProblemDetails.Status = StatusCodes.Status404NotFound; } break; case HttpStatusCode.ServiceUnavailable: { ProblemDetails.Type = _localizer["StatusCode503RfcType"]; ProblemDetails.Status = StatusCodes.Status503ServiceUnavailable; } break; case HttpStatusCode.InternalServerError: { ProblemDetails.Type = _localizer["StatusCode500RfcType"]; ProblemDetails.Status = StatusCodes.Status500InternalServerError; } break; } return(ProblemDetails); }
public async Task HandleHttpResponse(HttpResponseMessage httpResponseMessage) { switch (httpResponseMessage.StatusCode) { case HttpStatusCode.OK: case HttpStatusCode.Accepted: break; case HttpStatusCode.BadRequest: case HttpStatusCode.ServiceUnavailable: case HttpStatusCode.NotFound: { AliasErrorResponse aliasErrorResponse = await _cryptographyHelper.DecryptResponse <AliasErrorResponse>(await httpResponseMessage.Content.ReadAsStreamAsync()); ProblemDetails validationProblemDetails = _problemDetailsHelper.SetAliasErrorProblemDetail(aliasErrorResponse, httpResponseMessage.StatusCode); throw new ApiProblemDetailsException(validationProblemDetails); } case HttpStatusCode.InternalServerError: { if (httpResponseMessage.RequestMessage.RequestUri.AbsolutePath == _VisaAliasApiOptions.GetAliasApi && httpResponseMessage.StatusCode == HttpStatusCode.NotFound) { break; } AliasErrorResponse aliasErrorResponse = await _cryptographyHelper.DecryptResponse <AliasErrorResponse>(await httpResponseMessage.Content.ReadAsStreamAsync()); ProblemDetails validationProblemDetails = _problemDetailsHelper.SetAliasErrorProblemDetail(aliasErrorResponse, httpResponseMessage.StatusCode); throw new ApiProblemDetailsException(validationProblemDetails); } default: { throw new ApiProblemDetailsException(_problemDetailsHelper.GetGlobalProblemDetails()); } } }