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
on(code, overwrite: false, &block)
Alias for: register_callback
on!(code, &block)
Alias for: register_callback!
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