Sha256: 731b8f226ae061e4d4428edbdc43896ebb2b7cc2082a427d2be1e98f428848e5

Contents?: true

Size: 1.42 KB

Versions: 7

Compression:

Stored size: 1.42 KB

Contents

require 'faraday'

module Faraday

  class EdsExceptionMiddleware < Faraday::Middleware

  def initialize(app)
      super app
    end

    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

    def error_message(response)
      #puts response.inspect
      {
          method: response.method,
          url: response.url,
          status: response.status,
          error_body: response.body
      }
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ebsco-eds-1.1.5 lib/faraday/eds_exception_middleware.rb
ebsco-eds-1.1.4 lib/faraday/eds_exception_middleware.rb
ebsco-eds-1.1.3 lib/faraday/eds_exception_middleware.rb
ebsco-eds-1.1.1 lib/faraday/eds_exception_middleware.rb
ebsco-eds-1.1.0 lib/faraday/eds_exception_middleware.rb
ebsco-eds-1.0.9 lib/faraday/eds_exception_middleware.rb
ebsco-eds-1.0.8 lib/faraday/eds_exception_middleware.rb