Class: NxtHttpClient::ResponseHandler
- Inherits:
-
Object
- Object
- NxtHttpClient::ResponseHandler
- Includes:
- NxtRegistry
- Defined in:
- lib/nxt_http_client/response_handler.rb
Constant Summary collapse
- CallbackAlreadyRegistered =
Class.new(StandardError)
Instance Attribute Summary collapse
-
#result ⇒ Object
Returns the value of attribute result.
Instance Method Summary collapse
- #callback_for_response(response) ⇒ Object
- #callbacks ⇒ Object
- #configure(&block) ⇒ Object
- #eval_callback(target, key, response) ⇒ Object
-
#initialize ⇒ ResponseHandler
constructor
A new instance of ResponseHandler.
- #register_callback(code, overwrite: false, &block) ⇒ Object (also: #on)
- #register_callback!(code, &block) ⇒ Object (also: #on!)
Constructor Details
#initialize ⇒ ResponseHandler
Returns a new instance of ResponseHandler.
6 7 8 |
# File 'lib/nxt_http_client/response_handler.rb', line 6 def initialize @result = nil end |
Instance Attribute Details
#result ⇒ Object
Returns the value of attribute result.
10 11 12 |
# File 'lib/nxt_http_client/response_handler.rb', line 10 def result @result end |
Instance Method Details
#callback_for_response(response) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# 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 ⇒ Object
49 50 51 52 53 54 55 |
# 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) ⇒ Object
16 17 18 |
# File 'lib/nxt_http_client/response_handler.rb', line 16 def configure(&block) tap { |handler| block.call(handler) } end |
#eval_callback(target, key, response) ⇒ Object
12 13 14 |
# 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) ⇒ Object Also known as: on
20 21 22 23 24 25 26 27 28 |
# 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 |
#register_callback!(code, &block) ⇒ Object Also known as: on!
30 31 32 |
# File 'lib/nxt_http_client/response_handler.rb', line 30 def register_callback!(code, &block) register_callback(code, overwrite: true, &block) end |