module Gmail::Base::List::ClassMethods

Public Instance Methods

all(filters={}, opts={}) click to toggle source
# File lib/gmail/base/list.rb, line 5
def all(filters={}, opts={})
  max_results = filters[:maxResults] || 100
  opts[:items] ||= []

  if max_results == -1
    filters.merge!({maxResults: 100})
  end
  response = Gmail.request(base_method.send("list"), filters)
  items = response["#{class_name.downcase}s".to_sym] || []
  next_page_token = response[:nextPageToken]
  opts[:items] = opts[:items] + items

  if items.count < 100 || max_results == items.count
    Util.convert_to_gmail_object(opts[:items], class_name.downcase)
  else
    max_results = (max_results == -1)?-1:max_results-items.count
    all(filters.merge({maxResults: max_results, pageToken: next_page_token}), opts)
  end
end