Class: CloudLB::Exception

Inherits:
Object
  • Object
show all
Defined in:
lib/cloudlb/exception.rb

Defined Under Namespace

Classes: Authentication, BadRequest, CloudLBError, Connection, ExpiredAuthToken, ImmutableEntity, ItemNotFound, LoadBalancerFault, MissingArgument, Other, OutOfVirtualIps, OverLimit, ServiceFault, ServiceUnavailable, Syntax, Unauthorized, UnprocessableEntity

Class Method Summary collapse

Class Method Details

.raise_exception(response) ⇒ Object

In the event of a non-200 HTTP status code, this method takes the HTTP response, parses the JSON from the body to get more information about the exception, then raises the proper error. Note that all exceptions are scoped in the CloudLB::Exception namespace.



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/cloudlb/exception.rb', line 57

def self.raise_exception(response)
  return if response.code =~ /^20.$/
  begin
    fault = nil
    info = nil
    JSON.parse(response.body).each_pair do |key, val|
   fault=key
   info=val
 end
    exception_class = self.const_get(fault[0,1].capitalize+fault[1,fault.length])
    raise exception_class.new(info["message"], response.code, response.body)
  rescue NameError, JSON::ParserError
    raise CloudLB::Exception::Other.new("The server returned status #{response.code} with body #{response.body}", response.code, response.body)
  end
end