class Apitizer::Base

Public Class Methods

new(options = {}, &block) click to toggle source
# File lib/apitizer/base.rb, line 7
def initialize(options = {}, &block)
  @options = Helper.deep_merge(Apitizer.defaults, options)
  @block = block
end

Public Instance Methods

process(*arguments) click to toggle source
# File lib/apitizer/base.rb, line 12
def process(*arguments)
  request = build_request(*arguments)
  response = dispatcher.process(request)
  Result.new(request: request, response: response)
end

Private Instance Methods

build_request(*arguments) click to toggle source
# File lib/apitizer/base.rb, line 35
def build_request(*arguments)
  action, method, steps, parameters = prepare(*arguments)
  Connection::Request.new(method: method, path: map.trace(action, steps),
    parameters: parameters)
end
dispatcher() click to toggle source
# File lib/apitizer/base.rb, line 30
def dispatcher
  @dispatcher ||= Connection::Dispatcher.new(format: @options[:format],
    adaptor: @options[:adaptor], headers: @options[:headers])
end
map() click to toggle source
# File lib/apitizer/base.rb, line 26
def map
  @map ||= Routing::Map.new(&@block)
end
prepare(action, *path) click to toggle source
# File lib/apitizer/base.rb, line 41
def prepare(action, *path)
  action = action.to_sym
  method = @options[:dictionary][action] or raise Error, 'Unknown action'
  parameters = Helper.extract_hash!(path)
  steps = path.flatten.map(&:to_sym)

  [ action, method, steps, parameters ]
end