lib/ruby-box/item.rb in ruby-box-1.2.1 vs lib/ruby-box/item.rb in ruby-box-1.3.0
- old
+ new
@@ -49,11 +49,11 @@
def method_missing(method, *args, &block)
key = method.to_s
# Support has many and paginated has many relationships.
return many(key) if @@has_many.include?(key)
- return paginated(key, args[0] || 100, args[1] || 0) if @@has_many_paginated.include?(key)
+ return paginated(key, args[0] || 100, args[1] || 0, args[2]) if @@has_many_paginated.include?(key)
# update @raw_item hash if this appears to be a setter.
setter = method.to_s.end_with?('=')
key = key[0...-1] if setter
@raw_item[key] = args[0] if setter and update_fields.include?(key)
@@ -91,13 +91,14 @@
url = "#{RubyBox::API_URL}/#{resource_name}/#{id}/#{key}"
resp = @session.get( url )
resp['entries'].map {|i| RubyBox::Item.factory(@session, i)}
end
- def paginated(key, item_limit=100, offset=0)
+ def paginated(key, item_limit=100, offset=0, fields=nil)
Enumerator.new do |yielder|
while true
url = "#{RubyBox::API_URL}/#{resource_name}/#{id}/#{key}?limit=#{item_limit}&offset=#{offset}"
+ url = "#{url}&fields=#{fields.map(&:to_s).join(',')}" if fields
resp = @session.get( url )
resp['entries'].each do |entry|
yielder.yield(RubyBox::Item.factory(@session, entry))
end
offset += resp['entries'].count