Skip to content
Snippets Groups Projects
Verified Commit b230d3d3 authored by Alexander Olofsson's avatar Alexander Olofsson
Browse files

Even more improvements to error handling

parent 78f8c0d3
No related branches found
No related tags found
No related merge requests found
......@@ -31,6 +31,8 @@ module LiudeskCMDB
def self.create(body, code)
case code
when "500"
InternalServerError.new body, code
when "404"
NotFoundError.new body, code
else
......@@ -40,10 +42,10 @@ module LiudeskCMDB
def initialize(body, code)
@code = code
@errors = if body.is_a? String
[{ message: body }]
@errors = if body.is_a? Hash
body["errors"] || body[:errors] || [{ message: body.to_json }]
else
body["errors"] || body[:errors]
[{ message: body }]
end
super message
......@@ -53,12 +55,13 @@ module LiudeskCMDB
if @errors.is_a? Hash
@errors.values.flatten.join ", "
else
@errors.map { |err| err["message"] || err[:message] }.join ", "
@errors.map { |err| [err["fieldName"], err["message"] || err[:message]].compact.join(" - ") }.join ", "
end
end
end
class NotFoundError < RequestError; end
class InternalServerError < RequestError; end
# Data models
module Models
......
......@@ -73,8 +73,10 @@ module LiudeskCMDB
response.value
response.body
rescue Net::HTTPFatalError
raise LiudeskCMDB::RequestError.create(response.message, response.code)
rescue Net::HTTPClientException
body = JSON.parse(response.body)
body = JSON.parse(response.body) rescue body
raise LiudeskCMDB::RequestError.create(body, response.code)
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment