class BestbuyApi::Criteria
Public Class Methods
new(klass)
click to toggle source
# File lib/bestbuy_api/criteria.rb, line 10 def initialize(klass) @klass = klass end
Public Instance Methods
criteria()
click to toggle source
# File lib/bestbuy_api/criteria.rb, line 14 def criteria @criteria ||= { attributes: [], conditions: {} } end
limit(limit)
click to toggle source
# File lib/bestbuy_api/criteria.rb, line 32 def limit(limit) criteria[:limit] = limit.to_i self end
page(page)
click to toggle source
# File lib/bestbuy_api/criteria.rb, line 37 def page(page) criteria[:page] = page.to_i self end
response()
click to toggle source
# File lib/bestbuy_api/criteria.rb, line 42 def response params = Params.new(criteria, @klass.attributes) request.find(params.structure) end
select(args)
click to toggle source
# File lib/bestbuy_api/criteria.rb, line 18 def select(args) assert_keys(args, @klass.attributes[:read]) criteria[:attributes] = args self end
where(args)
click to toggle source
# File lib/bestbuy_api/criteria.rb, line 25 def where(args) assert_keys(args, @klass.attributes[:search]) criteria[:conditions].merge!(args) self end
Private Instance Methods
assert_keys(args, attributes)
click to toggle source
# File lib/bestbuy_api/criteria.rb, line 49 def assert_keys(args, attributes) valid_keys = attributes.keys args.each do |key, _v| unless valid_keys.include?(key) raise MissingAttributeError, "Unknown attribute: #{key.inspect}. Valid attributes are: " \ "#{valid_keys.map(&:inspect).join(', ')}" end end end
request()
click to toggle source
# File lib/bestbuy_api/criteria.rb, line 59 def request api_key = BestbuyApi.config.api_key @request ||= Request.new(api_key, @klass.attributes[:path]) end