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