class CFoundry::APIError

Exception representing errors returned by the API.

Attributes

description[R]
error_code[R]
request[R]
response[R]

Public Class Methods

error_classes() click to toggle source
# File lib/cfoundry/errors.rb, line 71
def error_classes
  @error_classes ||= {}
end
new(description = nil, error_code = nil, request = nil, response = nil) click to toggle source

Create an APIError with a given request and response.

# File lib/cfoundry/errors.rb, line 79
def initialize(description = nil, error_code = nil, request = nil, response = nil)
  @response = response
  @request = request
  @error_code = error_code || (response ? response[:status] : nil)
  @description = description || parse_description
end

Public Instance Methods

request_trace() click to toggle source
Calls superclass method CFoundry::TraceHelpers#request_trace
# File lib/cfoundry/errors.rb, line 91
def request_trace
  super(request)
end
response_trace() click to toggle source
Calls superclass method CFoundry::TraceHelpers#response_trace
# File lib/cfoundry/errors.rb, line 95
def response_trace
  super(response)
end
to_s() click to toggle source

Exception message.

# File lib/cfoundry/errors.rb, line 87
def to_s
  "#{error_code}: #{description}"
end

Private Instance Methods

parse_description() click to toggle source
# File lib/cfoundry/errors.rb, line 101
def parse_description
  return unless response

  parse_json(response[:body])[:description]
rescue MultiJson::DecodeError
  response[:body]
end
parse_json(x) click to toggle source
# File lib/cfoundry/errors.rb, line 109
def parse_json(x)
  if x.empty?
    raise MultiJson::DecodeError.new("Empty JSON string", [], "")
  else
    MultiJson.load(x, :symbolize_keys => true)
  end
end