17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/flowdock.rb', line 17
def handle_response(resp)
body = (resp.body.nil? || resp.body.strip.empty?) ? '{}' : resp.body
json = MultiJson.decode(body)
if resp.code == 404
raise NotFoundError, "Flowdock API returned error:\nStatus: #{resp.code}\n Message: #{json["message"]}"
end
unless resp.code >= 200 && resp.code < 300
errors = json["errors"].map {|k,v| "#{k}: #{v.join(',')}"}.join("\n") unless json["errors"].nil?
raise ApiError, "Flowdock API returned error:\nStatus: #{resp.code}\n Message: #{json["message"]}\n Errors:\n#{errors}"
end
json
rescue MultiJson::DecodeError
raise ApiError, "Flowdock API returned error:\nStatus: #{resp.code}\nBody: #{resp.body}"
end
|