Module: Mailchimp::Collection::Paging
- Included in:
- Mailchimp::Collection
- Defined in:
- lib/mailchimp_api_v3/collection/paging.rb
Constant Summary collapse
- DEFAULT_PAGE_SIZE =
500
Instance Method Summary collapse
- #fetch_options ⇒ Object
- #find_each ⇒ Object
- #find_in_pages(options = {}) ⇒ Object
- #invalidate_current_page ⇒ Object
- #offset ⇒ Object
- #page ⇒ Object
- #page_array ⇒ Object
- #page_children ⇒ Object
- #page_size ⇒ Object
- #parse_options(options = {}) ⇒ Object
Instance Method Details
#fetch_options ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 11 def links_delim = self.class::DATA_KEY.empty? ? '' : '.' { 'exclude_fields' => "#{self.class::DATA_KEY}#{links_delim}_links", 'offset' => offset, 'count' => page_size } end |
#find_each ⇒ Object
53 54 55 56 57 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 53 def find_each find_in_pages do |p| p.each { |child| yield child } end end |
#find_in_pages(options = {}) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 37 def find_in_pages( = {}) () loop do yield page_children @offset += page_size if offset > count @offset = 0 break end invalidate_current_page end end |
#invalidate_current_page ⇒ Object
65 66 67 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 65 def invalidate_current_page @page = @page_array = @page_children = nil end |
#offset ⇒ Object
29 30 31 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 29 def offset @offset ||= 0 end |
#page ⇒ Object
6 7 8 9 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 6 def page return @page if @page @page = @client.get(path, ) end |
#page_array ⇒ Object
21 22 23 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 21 def page_array @page_array ||= page[self.class::DATA_KEY] end |
#page_children ⇒ Object
25 26 27 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 25 def page_children @page_children ||= page_array.map { |d| self.class::CHILD_CLASS.new @client, d, path } end |
#page_size ⇒ Object
33 34 35 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 33 def page_size @page_size ||= DEFAULT_PAGE_SIZE end |
#parse_options(options = {}) ⇒ Object
59 60 61 62 63 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 59 def ( = {}) @offset = ['start'] if .key? 'start' @page_size = ['page_size'] if .key? 'page_size' invalidate_current_page end |