Sha256: 470394a8c52956cda5ad3147d932ffa2f6a3e88f384f6600d3cf932b1fd26a65

Contents?: true

Size: 1.04 KB

Versions: 5

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module RocketfuelApi
  module Faraday
    module Response
      class RaiseHttpError < ::Faraday::Response::Middleware
        EXCEPTIONS = {
          400 => RocketfuelApi::BadRequest,
          401 => RocketfuelApi::Unauthorized,
          403 => RocketfuelApi::Forbidden,
          404 => RocketfuelApi::NotFound,
          406 => RocketfuelApi::NotAcceptable,
          422 => RocketfuelApi::UnprocessableEntity,
          500 => RocketfuelApi::InternalServerError,
          501 => RocketfuelApi::NotImplemented,
          502 => RocketfuelApi::BadGateway,
          503 => RocketfuelApi::ServiceUnavailable
        }.freeze

        def on_complete(response)
          http_status = response.status.to_i

          return if http_status == 200

          exception = EXCEPTIONS.fetch(http_status)

          raise exception, response.body
        end

        def error_message(response)
          "#{response.method.to_s.upcase} #{response.url}: #{response.status} - #{response.body}"
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rocketfuel_api-0.2.0 lib/rocketfuel_api/faraday/raise_http_error.rb
rocketfuel_api-0.1.3 lib/rocketfuel_api/faraday/raise_http_error.rb
rocketfuel_api-0.1.2 lib/rocketfuel_api/faraday/raise_http_error.rb
rocketfuel_api-0.1.1 lib/rocketfuel_api/faraday/raise_http_error.rb
rocketfuel_api-0.1.0 lib/rocketfuel_api/faraday/raise_http_error.rb