Class: KSequencing::FaradayMiddleware::RaiseHttpException

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/k_sequencing/faraday/raise_http_exception.rb

Instance Method Summary collapse

Instance Method Details

#call(request_env) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/k_sequencing/faraday/raise_http_exception.rb', line 6

def call(request_env)
  @app.call(request_env).on_complete do |response|
    case response[:status].to_i
    when 200, 201
      # nothing to do here
    when 400
      error_message = error_message(response[:body])
      raise BadRequest, "#{response[:status]}: #{error_message}"
    when 403
      error_message = error_message(response[:body])
      raise NotPermitted, "#{response[:status]}: #{error_message}"
    when 404
      error_message = error_message(response[:body])
      raise NotFound, "#{response[:status]}: #{error_message}"
    else
      request_method = response[:method].to_s.upcase
      request_url = response[:url].to_s
      response_status = response[:status]
      error_message = error_message(response[:body])
      raise Error, "#{response_status}: #{request_method} #{request_url} #{error_message}"
    end
  end
end