Sha256: e65de1436df1c472423510c12dab1cade3cea96f9859e38d32feb337096bd8e5
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
module Loquor class ApiCall::Index < ApiCall attr_reader :criteria def initialize(path) super(path) @criteria = {} end def where(value) value.each do |key, value| @criteria[key] = value end self end # Proxy everything to the results so that this this class # transparently acts as an Array. def method_missing(name, *args, &block) results.send(name, *args, &block) end def find_each page = 1 per = 200 results = [] begin results = Loquor.get("#{generate_url}&page=#{page}&per=#{per}") results.each do |result| yield result end page += 1 end while(results.size == per) end private def results if @results.nil? @results = Loquor.get(generate_url) end @results end def generate_url query_string = @criteria.map { |key,value| if value.is_a?(String) "#{key}=#{URI.encode(value)}" elsif value.is_a?(Array) "#{key}=[#{URI.encode(value.join(","))}]" else raise LoquorError.new("Filter values must be strings or arrays.") end }.join("&") "#{@path}?#{query_string}" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
loquor-0.1.1 | lib/loquor/api_calls/index.rb |