class FaradayMiddleware::RaiseHttpException

Public Instance Methods

call(env) click to toggle source
# File lib/faraday/raise_http_exception.rb, line 6
def call(env)
  @app.call(env).on_complete do |response|
    case response[:status].to_i
    when 400
      raise QueueIt::Api::BadRequest.new(response.body, error_details(response))
    when 403
      raise QueueIt::Api::Forbidden.new(response.body, error_details(response))
    when 404
      raise QueueIt::Api::NotFound.new(response.body, error_details(response))
    when 500
      raise QueueIt::Api::InternalServerError.new(response.body, error_details(response))
    when 503
      raise QueueIt::Api::ServiceUnavailable.new(response.body, error_details(response))
    end
  end
end

Private Instance Methods

acts_like_json?(response_body) click to toggle source
# File lib/faraday/raise_http_exception.rb, line 29
def acts_like_json?(response_body)
  !response_body.nil? && !response_body.empty? && response_body.kind_of?(String)
end
error_details(response) click to toggle source
# File lib/faraday/raise_http_exception.rb, line 43
def error_details(response)
  response_body = parse_body(response.body)
  { status: response[:status].to_i, code: response_body["ErrorCode"], text: response_body["ErrorText"] }
end
error_response_body(code, text) click to toggle source
# File lib/faraday/raise_http_exception.rb, line 25
def error_response_body(code, text)
  { "ErrorCode" => code, "ErrorText" => text }
end
parse_body(response_body) click to toggle source
# File lib/faraday/raise_http_exception.rb, line 39
def parse_body(response_body)
  acts_like_json?(response_body) ? parse_json(response_body) : error_response_body(nil, nil)
end
parse_json(body) click to toggle source
# File lib/faraday/raise_http_exception.rb, line 33
def parse_json(body)
  JSON.parse(body)
rescue JSON::ParserError
  error_response_body(nil, body)
end