class Fog::Rackspace::Errors::ServiceError
Attributes
response_data[R]
status_code[R]
transaction_id[R]
Public Class Methods
extract_message(data)
click to toggle source
# File lib/fog/rackspace/core.rb, line 54 def self.extract_message(data) if data.is_a?(Hash) message = data.values.first['message'] if data.values.first.is_a?(Hash) message ||= data['message'] end message || data.inspect end
slurp(error, service=nil)
click to toggle source
Calls superclass method
# File lib/fog/rackspace/core.rb, line 23 def self.slurp(error, service=nil) data = nil message = nil status_code = nil if error.response status_code = error.response.status unless error.response.body.empty? begin data = Fog::JSON.decode(error.response.body) message = extract_message(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.set_transaction_id(error, service) new_error end
Public Instance Methods
set_transaction_id(error, service)
click to toggle source
# File lib/fog/rackspace/core.rb, line 49 def set_transaction_id(error, service) return unless service && service.respond_to?(:request_id_header) && error.response @transaction_id = error.response.headers[service.request_id_header] end
to_s()
click to toggle source
# File lib/fog/rackspace/core.rb, line 18 def to_s status = status_code ? "HTTP #{status_code}" : "HTTP <Unknown>" "[#{status} | #{transaction_id}] #{super}" end