class Quickbooks::Service::BaseService
def check_response(response, options = {})
def check_response(response, options = {}) if is_json? parse_json(response.plain_body) elsif !is_pdf? parse_xml(response.plain_body) end @last_response_intuit_tid = if response.respond_to?(:headers) && response.headers response.headers['intuit_tid'] else nil end status = response.code.to_i case status when 200 # even HTTP 200 can contain an error, so we always have to peek for an Error if response_is_error? parse_and_raise_exception(options) else response end when 302 raise "Unhandled HTTP Redirect" when 401 raise Quickbooks::AuthorizationFailure, parse_intuit_error when 403 message = parse_intuit_error[:message] if message.include?('ThrottleExceeded') raise Quickbooks::ThrottleExceeded, message end raise Quickbooks::Forbidden, message when 404 raise Quickbooks::NotFound when 413 raise Quickbooks::RequestTooLarge when 400, 500 parse_and_raise_exception(options) when 429 message = parse_intuit_error[:message] raise Quickbooks::TooManyRequests, message when 502, 503, 504 raise Quickbooks::ServiceUnavailable else raise "HTTP Error Code: #{status}, Msg: #{response.plain_body}" end end