class CabbageDoc::Request

Constants

METHODS

Attributes

collection[R]
raw_request[R]

Public Class Methods

new(raw_request, collection) click to toggle source
# File lib/cabbage_doc/request.rb, line 23
def initialize(raw_request, collection)
  @raw_request = raw_request
  @collection = collection
end
parse(s, tag = TAG) click to toggle source
# File lib/cabbage_doc/request.rb, line 12
def parse(s, tag = TAG)
  variables = YAML.load(s)

  new(OpenStruct.new(params: {}, env: {}), Collection.instance).tap do |instance|
    [:@_id, :@_auth, :@_action, :@_method, :@_tag, :@_params].each_with_index do |k, i|
      instance.instance_variable_set(k, variables[i])
    end
  end
end

Public Instance Methods

id() click to toggle source
# File lib/cabbage_doc/request.rb, line 47
def id
  @_id ||= new_id
end
perform() click to toggle source
# File lib/cabbage_doc/request.rb, line 28
def perform
  Response.new(url, params, perform_request) if valid?
end
to_yaml() click to toggle source
# File lib/cabbage_doc/request.rb, line 36
def to_yaml
  YAML.dump([
    id,
    auth,
    action,
    method,
    tag,
    params
  ])
end
valid?() click to toggle source
# File lib/cabbage_doc/request.rb, line 32
def valid?
  action && method && METHODS.include?(method) && auth.valid?
end

Private Instance Methods

action() click to toggle source
# File lib/cabbage_doc/request.rb, line 71
def action
  @_action ||= compose_action(raw_request.params[Params::ACTION])
end
auth() click to toggle source
# File lib/cabbage_doc/request.rb, line 114
def auth
  @_auth ||= Authentication.new(raw_request, tag)
end
client() click to toggle source
# File lib/cabbage_doc/request.rb, line 122
def client
  @_client ||= Client.new(auth)
end
compose_action(action) click to toggle source
# File lib/cabbage_doc/request.rb, line 87
def compose_action(action)
  return action unless action && action.include?(':')

  action = action.dup

  action.dup.scan(/\/:([^\/]+)/) do
    value = params.delete($1)
    return unless value

    action.sub!(":#{$1}", value)
  end

  action
end
compose_method(method) click to toggle source
# File lib/cabbage_doc/request.rb, line 83
def compose_method(method)
  method.downcase.to_sym if method
end
compose_tag(tag) click to toggle source
# File lib/cabbage_doc/request.rb, line 102
def compose_tag(tag)
  if tag
    tag.downcase.to_sym
  else
    TAG
  end
end
method() click to toggle source
# File lib/cabbage_doc/request.rb, line 75
def method
  @_method ||= compose_method(raw_request.params[Params::METHOD])
end
new_id() click to toggle source
# File lib/cabbage_doc/request.rb, line 53
def new_id
  components = [MARKER, Time.now.utc, Process.pid, Thread.current.object_id, rand(99999)]
  Digest::SHA1.hexdigest(components.join('_'))
end
params() click to toggle source
# File lib/cabbage_doc/request.rb, line 110
def params
  @_params ||= Params.new(raw_params, collection)
end
perform_request() click to toggle source
# File lib/cabbage_doc/request.rb, line 58
def perform_request
  key = (method == :get) ? :query : :body

  data = params.to_hash
  data = data.to_json if key == :body && auth.json

  client.public_send(method, action, key => data)
end
raw_params() click to toggle source
# File lib/cabbage_doc/request.rb, line 118
def raw_params
  @_raw_params ||= raw_request.params
end
tag() click to toggle source
# File lib/cabbage_doc/request.rb, line 79
def tag
  @_tag ||= compose_tag(raw_request.params[Params::TAG])
end
url() click to toggle source
# File lib/cabbage_doc/request.rb, line 67
def url
  @_url ||= [client.base_uri, action]
end