class Supercamp::Criteria::Abstract

Attributes

options[R]
response[W]

Public Class Methods

new(&block) click to toggle source
# File lib/supercamp/criteria/abstract.rb, line 9
def initialize(&block)
  @options = {}
  instance_eval(&block) if block_given?
end

Public Instance Methods

count() click to toggle source
# File lib/supercamp/criteria/abstract.rb, line 47
def count
  response.count
end
endpoint() click to toggle source
# File lib/supercamp/criteria/abstract.rb, line 26
def endpoint
  name = self.class.to_s.split("::").last.downcase
  "#{Supercamp.config.base_url}/#{name}s"
end
query() click to toggle source
# File lib/supercamp/criteria/abstract.rb, line 31
def query
  opts = { api_key: Supercamp.config.api_key }.merge(options)
  Typhoeus::Request.new(endpoint, timeout: Supercamp.config.timeout, params: opts)
end
response(query=query) click to toggle source
# File lib/supercamp/criteria/abstract.rb, line 36
def response(query=query)
  return @response unless @response.nil?
  response = query.run
  if response.code == 200
    @response = Supercamp::Response.new response
    @response.freeze
  else
    raise Supercamp::Error.new self, response
  end
end
results() click to toggle source
# File lib/supercamp/criteria/abstract.rb, line 51
def results
  response.results
end

Private Instance Methods

merge_option(key, value) click to toggle source
# File lib/supercamp/criteria/abstract.rb, line 57
def merge_option(key, value)
  @options.dup.merge({ key.to_s => value }).tap do |opts|
    @options  = opts
    @response = nil
    @options.freeze
  end
end