class Jess::HttpClient::ErrorDecorator
Wraps a Net::HTTP object to provide exception handling around the `request` method, such that 400 and 500 error codes are translated into appropriate Jess::HttpClient::Error
exceptions.
Public Instance Methods
request(req)
click to toggle source
Calls superclass method
# File lib/jess/http_client/error_decorator.rb, line 10 def request(req) res = super raise_if_error_code(res) res rescue StandardError => e handle_exception(e, req, res) end
Private Instance Methods
fill_exception(err, req, res)
click to toggle source
# File lib/jess/http_client/error_decorator.rb, line 43 def fill_exception(err, req, res) err.uri = req.uri err.http_method = req.method return if res.nil? err.code = res.code begin err.response = res.body.to_s rescue StandardError err.response = nil end end
handle_exception(err, req, res)
click to toggle source
# File lib/jess/http_client/error_decorator.rb, line 29 def handle_exception(err, req, res) case err when IOError, Timeout::Error err = ConnectionError.new(err.message) when Error # pass else err = Error.new(err.inspect) end fill_exception(err, req, res) raise err end
raise_if_error_code(res)
click to toggle source
# File lib/jess/http_client/error_decorator.rb, line 20 def raise_if_error_code(res) return if res.is_a?(Net::HTTPSuccess) raise BadCredentials, res.message if res.code == "401" raise NotFound, res.message if res.code == "404" raise ServerError, res.message if res.is_a?(Net::HTTPServerError) raise Error, res.message end