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