class Loquor::ApiCall::Index
Attributes
clauses[R]
criteria[R]
Public Class Methods
new(klass)
click to toggle source
Calls superclass method
Loquor::ApiCall::new
# File lib/loquor/api_calls/index.rb, line 6 def initialize(klass) super(klass) @criteria = {} @clauses = [] end
Public Instance Methods
find_each() { |klass| ... }
click to toggle source
# File lib/loquor/api_calls/index.rb, line 52 def find_each page = 1 per = 200 results = [] begin results = Loquor.get("#{generate_url}&page=#{page}&per=#{per}") results.each do |result| yield klass.new(result) end page += 1 end while(results.size == per) end
method_missing(name, *args, &block)
click to toggle source
Proxy everything to the results so that this this class transparently acts as an Array.
# File lib/loquor/api_calls/index.rb, line 48 def method_missing(name, *args, &block) results.send(name, *args, &block) end
order(value)
click to toggle source
# File lib/loquor/api_calls/index.rb, line 30 def order(value) @order = value self end
page(value)
click to toggle source
# File lib/loquor/api_calls/index.rb, line 41 def page(value) @page = value self end
per(value)
click to toggle source
# File lib/loquor/api_calls/index.rb, line 35 def per(value) @per = value self end
Also aliased as: limit
select(value)
click to toggle source
# File lib/loquor/api_calls/index.rb, line 24 def select(value) @criteria[:fields] ||= [] @criteria[:fields] += value self end
where(data)
click to toggle source
# File lib/loquor/api_calls/index.rb, line 12 def where(data) case data when String @clauses << data else data.each do |key, value| @criteria[key] = value end end self end
Private Instance Methods
add_clause(query_string, clause)
click to toggle source
# File lib/loquor/api_calls/index.rb, line 116 def add_clause(query_string, clause) query_string << "clauses[]=#{URI.encode(clause.to_s)}" end
add_criteria(query_string, key, value)
click to toggle source
# File lib/loquor/api_calls/index.rb, line 90 def add_criteria(query_string, key, value) substitute_value = Loquor.config.substitute_values[value] if !substitute_value.nil? query_string << "#{key}=#{URI.encode_www_form_component(substitute_value)}" else case value when String, Symbol, Numeric, Date, Time, DateTime query_string << "#{key}=#{URI.encode_www_form_component(value.to_s)}" when Array if value.empty? query_string << "#{key}[]=" else value.each do |v| query_string << "#{key}[]=#{URI.encode_www_form_component(v.to_s)}" end end when Hash value.each do |k,v| query_string << "#{key}[#{k}]=#{URI.encode_www_form_component(v.to_s)}" end else raise LoquorError.new("Filter values must be strings, arrays, date, time, datetime or single-depth hashes.") end end end
generate_url()
click to toggle source
# File lib/loquor/api_calls/index.rb, line 74 def generate_url query_string = [] @criteria.each do |key,value| add_criteria(query_string, key, value) end @clauses.each do |clause| add_clause(query_string, clause) end query_string << "per=#{@per}" if @per query_string << "page=#{@page}" if @page query_string << "order=#{@order}" if @order "#{klass.path}?#{query_string.join("&")}" end
results()
click to toggle source
# File lib/loquor/api_calls/index.rb, line 67 def results if @results.nil? @results = Loquor.get(generate_url).map {|obj| klass.new(obj)} end @results end