def process_error_response(response)
messages = Array.new
begin
result = RHC::Json.decode(response)
messages = result['messages']
rescue => e
logger.debug "Response did not include a message from server" if @mydebug
end
case response.code
when 401
raise UnAuthorizedException, "Not authenticated"
when 403
messages.each do |message|
if message['severity'].upcase == "ERROR"
raise RequestDeniedException, message['text']
end
end
when 404
messages.each do |message|
if message['severity'].upcase == "ERROR"
raise ResourceNotFoundException, message['text']
end
end
when 409
messages.each do |message|
if message['severity'] and message['severity'].upcase == "ERROR"
raise ValidationException, message['text']
end
end
when 422
e = nil
messages.each do |message|
if e and e.field == message["field"]
e.message << " #{message["text"]}"
else
e = ValidationException.new(message["text"], message["field"], message["code"])
end
end
raise e
when 400
messages.each do |message|
if message['severity'].upcase == "ERROR"
raise ClientErrorException, message['text']
end
end
when 500
messages.each do |message|
if message['severity'].upcase == "ERROR"
raise ServerErrorException, message['text']
end
end
when 503
messages.each do |message|
if message['severity'].upcase == "ERROR"
raise ServiceUnavailableException, message['text']
end
end
else
raise ResourceAccessException, "Server returned error code with no output: #{response.code}"
end
end