def self.slurp(error)
data = nil
message = nil
status_code = nil
minor_code = nil
if error.response
status_code = error.response.status
unless error.response.body.empty?
begin
document = Fog::ToHashDocument.new
parser = Nokogiri::XML::SAX::PushParser.new(document)
parser << error.response.body
parser.finish
data = document.body
message = extract_message(data)
minor_code = extract_minor_code(data)
rescue => e
Fog::Logger.warning("Received exception '#{e}' while decoding: #{error.response.body}")
message = error.response.body
data = error.response.body
end
end
end
new_error = super(error, message)
new_error.instance_variable_set(:@response_data, data)
new_error.instance_variable_set(:@status_code, status_code)
new_error.instance_variable_set(:@minor_error_code, minor_code)
new_error
end