class NxtHttpClient::ResponseHandler
Constants
- CallbackAlreadyRegistered
Attributes
result[RW]
Public Class Methods
new()
click to toggle source
# File lib/nxt_http_client/response_handler.rb, line 6 def initialize @result = nil end
Public Instance Methods
callback_for_response(response)
click to toggle source
# File lib/nxt_http_client/response_handler.rb, line 37 def callback_for_response(response) key_from_response = response.code.to_s matching_any_callback = callbacks.resolve('any') return matching_any_callback if matching_any_callback.present? callbacks.resolve(key_from_response) || response.success? && callbacks.resolve('success') || response.timed_out? && callbacks.resolve('timed_out') || !response.success? && callbacks.resolve('error') || callbacks.resolve('others') end
callbacks()
click to toggle source
# File lib/nxt_http_client/response_handler.rb, line 49 def callbacks @callbacks ||= NxtRegistry::Registry.new( :callbacks, call: false, on_key_already_registered: ->(key) { raise_callback_already_registered(key) } ) end
configure(&block)
click to toggle source
# File lib/nxt_http_client/response_handler.rb, line 16 def configure(&block) tap { |handler| block.call(handler) } end
eval_callback(target, key, response)
click to toggle source
# File lib/nxt_http_client/response_handler.rb, line 12 def eval_callback(target, key, response) target.instance_exec(response, &callbacks.resolve(key)) end
register_callback(code, overwrite: false, &block)
click to toggle source
# File lib/nxt_http_client/response_handler.rb, line 20 def register_callback(code, overwrite: false, &block) code = regex_or_code(code) if overwrite callbacks.register!(code, block) else callbacks.register(code, block) end end
Also aliased as: on
register_callback!(code, &block)
click to toggle source
# File lib/nxt_http_client/response_handler.rb, line 30 def register_callback!(code, &block) register_callback(code, overwrite: true, &block) end
Also aliased as: on!
Private Instance Methods
initialize_copy(original)
click to toggle source
Calls superclass method
# File lib/nxt_http_client/response_handler.rb, line 73 def initialize_copy(original) super @callbacks = original.send(:callbacks).clone @result = nil end
raise_callback_already_registered(code)
click to toggle source
# File lib/nxt_http_client/response_handler.rb, line 67 def raise_callback_already_registered(code) msg = "Callback already registered for status: #{code}." msg << ' Use bang method to overwrite the callback.' raise CallbackAlreadyRegistered, msg end
regex_or_code(key)
click to toggle source
# File lib/nxt_http_client/response_handler.rb, line 59 def regex_or_code(key) return key if key.is_a?(Regexp) return key if key.to_s.exclude?('*') regex_key = key.to_s.gsub('*', '[0-9]{1}') /\A#{regex_key}\z/ end