module Cuba::Tools::Api::Helpers

Public Class Methods

setup(app) click to toggle source
# File lib/cuba/tools/api.rb, line 32
def self.setup app
  require 'yaml'
end

Public Instance Methods

add_attributes_for(params) click to toggle source
# File lib/cuba/tools/api.rb, line 72
def add_attributes_for params
  params.dup.each do |key, value|
    if !key[/_attributes$/] && value.is_a?(Hash)
      params["#{key}_attributes"] = add_attributes_for value
      params.delete key
    end
  end

  params
end
api_params(key, klass) click to toggle source
# File lib/cuba/tools/api.rb, line 36
def api_params key, klass
  params = add_attributes_for req.params[key.to_s]

  @api_params ||= YAML.load_file "#{Api.config.path}/#{key}.yml"

  form = klass.restrict!(current_user).new

  if form.validates params, as: current_user
    lambda { captures << form; captures << params }
  else
    raise ValidationError.new(form.errors), 'Api Validation Failed'
  end
end
api_signature() click to toggle source
# File lib/cuba/tools/api.rb, line 50
def api_signature
  api_request = Signature::Request.new(
    req.request_method,
    req.path,
    req.params,
    req.env
  )

  user = false

  api_request.authenticate do |key|
    user = user_class.where(api_key: key).first
    Signature::Token.new key, user.try(:api_secret)
  end

  if defined? Rails
    @request = req
  end

  sign_in user
end

Private Instance Methods

user_class() click to toggle source
# File lib/cuba/tools/api.rb, line 85
def user_class
  Cuba::Tools::Auth.config.user_class.constantize
end