Improve SQLApi exception handling

pull/6373/head
Rafa de la Torre 9 years ago committed by Mario de Frutos
parent 05fece4f85
commit afacaf63d5

@ -8,6 +8,8 @@ module CartoDB
class SQLApiError < StandardError; end
class SQLError < SQLApiError; end
class PermissionError < SQLApiError; end
class TimeoutError < SQLApiError; end
class DnsError < SQLApiError; end
# seconds
CONNECT_TIMEOUT = 45
@ -37,7 +39,7 @@ module CartoDB
@response_code = response.response_code
body = inflate(response.body.to_s)
@parsed_response = ::JSON.parse(body) rescue nil
raise_if_error
raise_if_error(response)
parsed_response["rows"] rescue body
end
@ -47,8 +49,10 @@ module CartoDB
return text
end
def raise_if_error
def raise_if_error(response)
error_message = parsed_response["error"].first rescue nil
raise DnsError if response.return_code == :couldnt_resolve_host
raise TimeoutError if response.timed_out?
raise PermissionError if error_message =~ /^permission denied for relation/
raise SQLError.new(error_message) if response_code != 200
end

Loading…
Cancel
Save