コード例 #1
0
        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);
        }
コード例 #2
0
        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());
            }
            }
        }