/// <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; } }
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); }