Sha256: 2825e6d0e209f7888094a358c4c533be52278955a89a160d297cc808b212d6d8

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module Delhivery
  module Faraday
    module Response
      class RaiseHttpError < ::Faraday::Response::Middleware
        def on_complete(response)
          case response[:status].to_i
          when 400
            raise Delhivery::BadRequest, error_message(response)
          when 401
            raise Delhivery::Unauthorized, error_message(response)
          when 403
            raise Delhivery::Forbidden, error_message(response)
          when 404
            raise Delhivery::NotFound, error_message(response)
          when 406
            raise Delhivery::NotAcceptable, error_message(response)
          when 422
            raise Delhivery::UnprocessableEntity, error_message(response)
          when 500
            raise Delhivery::InternalServerError, error_message(response)
          when 501
            raise Delhivery::NotImplemented, error_message(response)
          when 502
            raise Delhivery::BadGateway, error_message(response)
          when 503
            raise Delhivery::ServiceUnavailable, error_message(response)
          end
        end

        def error_message(response)
          msg = "#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]}"
          if errors = response[:body] && response[:body]["detail"]
            msg << "\n"
            msg << errors.join("\n")
          end
          msg
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
delhivery-0.1.1 lib/delhivery/faraday/raise_http_errors.rb