c53b52986e31858575023886cdd7327fccd8949cTim Reddehasemodule UriFetcher
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase module Errors
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase class Error < StandardError; end
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase class ArgumentError < ::ArgumentError; end
dcc043c5ec6483c860dbb4047479c686b3d9d9c2Eugen Kuksa class TimeoutError < Error; end
dcc043c5ec6483c860dbb4047479c686b3d9d9c2Eugen Kuksa class HostUnreachableError < Error; end
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase class UnfollowableResponseError < Error
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase DEFAULT_MSG = "can't follow the response, and response not useable"
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase attr_reader :last_response
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase def initialize(msg=DEFAULT_MSG, last_response: nil)
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase @last_response = last_response
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase super(msg)
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase end
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase end
14446ef4d8181bc484358d51cd08c4ad6353bb2eTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase class TooManyRedirectionsError < ArgumentError
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase DEFAULT_MSG = 'too many HTTP redirects encountered'
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase attr_reader :last_response
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase def initialize(msg=DEFAULT_MSG, last_response: nil)
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase @last_response = last_response
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase super(msg)
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase end
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase end
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase class UnexpectedStatusCodeError < Error
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase attr_reader :response, :status_code
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase # Status-Code should be only used as an option if
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase # you don't have the response object available.
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase def initialize(msg=nil, response: nil, status_code: nil)
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase @response = response
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase @status_code = response ? response.code : status_code
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase super(msg || generate_message)
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase end
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase def generate_message
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase <<-ERROR
c53b52986e31858575023886cdd7327fccd8949cTim ReddehaseEncountered an unexpected status code of #{status_code}.
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase#{"Here is the full response: <#{response}>" if response}
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase ERROR
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase end
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase end
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase
c53b52986e31858575023886cdd7327fccd8949cTim Reddehase end
c53b52986e31858575023886cdd7327fccd8949cTim Reddehaseend