class Faraday::EdsExceptionMiddleware

Public Class Methods

new(app) click to toggle source
Calls superclass method
# File lib/faraday/eds_exception_middleware.rb, line 7
def initialize(app)
    super app
  end

Public Instance Methods

call(env) click to toggle source
# File lib/faraday/eds_exception_middleware.rb, line 11
def call(env)
  begin
    @app.call(env).on_complete do |response|
      case response.status
        when 200
        when 400
          if response.body['ErrorNumber'] == '132'
            raise EBSCO::EDS::NotFound.new(error_message(response))
          else
            raise EBSCO::EDS::BadRequest.new(error_message(response))
          end
          # when 401
          #   raise EBSCO::EDS::Unauthorized.new
          # when 403
          #   raise EBSCO::EDS::Forbidden.new
          # when 404
          #   raise EBSCO::EDS::NotFound.new
          # when 429
          #   raise EBSCO::EDS::TooManyRequests.new
        when 500
          raise EBSCO::EDS::InternalServerError.new
        when 503
          raise EBSCO::EDS::ServiceUnavailable.new
        else
          raise EBSCO::EDS::BadRequest.new(error_message(response))
      end
    end
    rescue Faraday::ConnectionFailed
      raise EBSCO::EDS::ConnectionFailed.new
  end
end

Private Instance Methods

error_message(response) click to toggle source
# File lib/faraday/eds_exception_middleware.rb, line 45
def error_message(response)
  #puts response.inspect
  {
      method: response.method,
      url: response.url,
      status: response.status,
      error_body: response.body
  }
end