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