static bool IsExceptionTransient(Exception exception)
 {
     return(exception switch
     {
         BrokerUnreachableException bue => bue.InnerException switch
         {
             AuthenticationFailureException _ => false,
             _ => true
         },
Example #2
0
        /// <summary>
        ///     Throw request exception asynchronous.
        /// </summary>
        /// <exception cref="RequestException">
        ///     Thrown when a Request error condition occurs.
        /// </exception>
        /// <returns>
        ///     A <see cref="Task" /> representing the operation.
        /// </returns>
        private static async Task ThrowRequestExceptionAsync(HttpResponseMessage response)
        {
            string content = await response.Content.ReadAsStringAsync()
                             .ConfigureAwait(continueOnCapturedContext: false);

            Error error = ParseError(response.StatusCode, content);

            RequestException requestException;

            switch (response.StatusCode)
            {
            case HttpStatusCode.BadRequest:
                requestException = new BadRequestException(error.Message, error.Code, error.Reason);

                break;

            case HttpStatusCode.Forbidden:
                requestException = new UnauthorizedAccessException(error.Message, error.Code, error.Reason);

                break;

            case HttpStatusCode.InternalServerError:
                requestException = new InternalServerErrorException(error.Message, error.Code, error.Reason);

                break;

            case HttpStatusCode.NotFound:
                requestException = new ResourceNotFoundException(error.Message, error.Code, error.Reason);

                break;

            case HttpStatusCode.Unauthorized:
                requestException = new AuthenticationFailureException(error.Message, error.Code, error.Reason);

                break;

            default:
                requestException = new RequestException(error.Message, error.Code, error.Reason);

                break;
            }

            throw requestException;
        }