Пример #1
0
        /// <summary>
        /// HandleNonSuccessfulResponse will only be called to process responses return from service that are not 2xx.
        /// If this happens, throw OciException.
        /// </summary>
        /// <param name="responseMessage">An HttpResponseMessage.</param>
        /// <exception>Throws OciException if error code and message are retrieved, or throws any exception from ReadEntityInternal.</exception>
        public static void HandleNonSuccessfulResponse(HttpResponseMessage responseMessage)
        {
            var responseOpcRequestId = HeaderUtils.GetFirstorDefaultHeaderValue(responseMessage.Headers, "opc-request-id");

            try
            {
                ErrorCodeAndMessage errorCodeAndMessage = ReadEntityInternal <ErrorCodeAndMessage>(responseMessage, responseOpcRequestId);
                throw new OciException(
                          responseMessage.StatusCode,
                          errorCodeAndMessage?.Message ?? responseMessage.ReasonPhrase ?? DEFAULT_OCI_EXCEPTION_MESSAGE,
                          errorCodeAndMessage?.Code ?? DEFAULT_OCI_EXCEPTION_SERVICE_CODE,
                          responseOpcRequestId);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Пример #2
0
        public void TestHandleNonSuccessfulResponseWithCodeAndMessage(HttpStatusCode errorStatusCode, string errorMessage)
        {
            var dummyErrorObject = new ErrorCodeAndMessage(errorStatusCode.ToString(), errorMessage);
            var jsonString       = JsonConvert.SerializeObject(dummyErrorObject);
            var content          = new StringContent(jsonString);

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            var dummyResponse = new HttpResponseMessage()
            {
                StatusCode = errorStatusCode,
                Content    = content
            };

            var exception = Assert.Throws <OciException>(
                () => ResponseHelper.HandleNonSuccessfulResponse(dummyResponse));

            Assert.Equal(errorStatusCode, exception.StatusCode);
            Assert.Equal(errorMessage, exception.Message);
        }