1 module Databasedotcom
2 # An exception raised when any non successful request is made to Force.com.
3 class SalesForceError < StandardError
4 # the Net::HTTPResponse from the API call
5 attr_accessor :response
6 # the +errorCode+ from the server response body
7 attr_accessor :error_code
8
9 def initialize(response)
10 self.response = response
11 parsed_body = JSON.parse(response.body) rescue nil
12 if parsed_body
13 if parsed_body.is_a?(Array)
14 message = parsed_body[0]["message"]
15 self.error_code = parsed_body[0]["errorCode"]
16 else
17 message = parsed_body["error_description"]
18 self.error_code = parsed_body["error"]
19 end
20 else
21 message = response.body
22 end
23 super(message)
24 end
25 end
26 en