Sha256: 8209b2dae58bc60213ec69f55246ea79c9cc0033d0e23e985e787d464bf2fd45

Contents?: true

Size: 1.79 KB

Versions: 64

Compression:

Stored size: 1.79 KB

Contents

# frozen_string_literal: true

module Faraday
  class Response
    # RaiseError is a Faraday middleware that raises exceptions on common HTTP
    # client or server error responses.
    class RaiseError < Middleware
      # rubocop:disable Naming/ConstantName
      ClientErrorStatuses = (400...500).freeze
      ServerErrorStatuses = (500...600).freeze
      # rubocop:enable Naming/ConstantName

      def on_complete(env)
        case env[:status]
        when 400
          raise Faraday::BadRequestError, response_values(env)
        when 401
          raise Faraday::UnauthorizedError, response_values(env)
        when 403
          raise Faraday::ForbiddenError, response_values(env)
        when 404
          raise Faraday::ResourceNotFound, response_values(env)
        when 407
          # mimic the behavior that we get with proxy requests with HTTPS
          msg = %(407 "Proxy Authentication Required")
          raise Faraday::ProxyAuthError.new(msg, response_values(env))
        when 409
          raise Faraday::ConflictError, response_values(env)
        when 422
          raise Faraday::UnprocessableEntityError, response_values(env)
        when ClientErrorStatuses
          raise Faraday::ClientError, response_values(env)
        when ServerErrorStatuses
          raise Faraday::ServerError, response_values(env)
        when nil
          raise Faraday::NilStatusError, response_values(env)
        end
      end

      def response_values(env)
        {
          status: env.status,
          headers: env.response_headers,
          body: env.body,
          request: {
            method: env.method,
            url_path: env.url.path,
            params: env.params,
            headers: env.request_headers,
            body: env.request_body
          }
        }
      end
    end
  end
end

Version data entries

64 entries across 52 versions & 11 rubygems

Version Path
avalara_sdk-24.12.2 vendor/bundle/ruby/2.7.0/gems/faraday-1.10.4/lib/faraday/response/raise_error.rb
avalara_sdk-24.12.1 vendor/bundle/ruby/2.7.0/gems/faraday-1.10.4/lib/faraday/response/raise_error.rb
avalara_sdk-24.12.0 vendor/bundle/ruby/2.7.0/gems/faraday-1.10.4/lib/faraday/response/raise_error.rb
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/faraday-1.10.3/lib/faraday/response/raise_error.rb
faraday-1.10.4 lib/faraday/response/raise_error.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/faraday-1.2.0/lib/faraday/response/raise_error.rb
avalara_sdk-24.2.29 vendor/bundle/ruby/2.7.0/gems/faraday-1.10.3/lib/faraday/response/raise_error.rb
faraday-1.10.3 lib/faraday/response/raise_error.rb
faraday-1.10.2 lib/faraday/response/raise_error.rb
faraday-1.10.1 lib/faraday/response/raise_error.rb
op_connect-0.1.2 vendor/bundle/ruby/3.1.0/gems/faraday-1.10.0/lib/faraday/response/raise_error.rb
plaid-14.13.0 vendor/bundle/ruby/3.0.0/gems/faraday-1.10.0/lib/faraday/response/raise_error.rb
tdiary-5.2.1 vendor/bundle/ruby/3.1.0/gems/faraday-1.10.0/lib/faraday/response/raise_error.rb
faraday-1.10.0 lib/faraday/response/raise_error.rb
plaid-14.12.1 vendor/bundle/ruby/3.0.0/gems/faraday-1.9.3/lib/faraday/response/raise_error.rb
plaid-14.12.0 vendor/bundle/ruby/2.6.0/gems/faraday-1.9.3/lib/faraday/response/raise_error.rb
plaid-14.12.0 vendor/bundle/ruby/2.6.0/gems/faraday-1.8.0/lib/faraday/response/raise_error.rb
plaid-14.11.1 vendor/bundle/ruby/2.6.0/gems/faraday-1.9.3/lib/faraday/response/raise_error.rb
faraday-1.9.3 lib/faraday/response/raise_error.rb
faraday-1.9.2 lib/faraday/response/raise_error.rb