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
13 14 15 16 17 18 19 20 21 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 13 def links_delim = self.class::DATA_KEY.empty? ? '' : '._links,' { 'exclude_fields' => "#{self.class::DATA_KEY}#{links_delim}_links", 'offset' => offset, 'count' => page_size } end |
#find_each ⇒ Object
55 56 57 58 59 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 55 def find_each find_in_pages do |p| p.each { |child| yield child } end end |
#find_in_pages(options = {}) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 39 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
70 71 72 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 70 def invalidate_current_page @page = @page_array = @page_children = nil end |
#offset ⇒ Object
31 32 33 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 31 def offset @offset ||= 0 end |
#page ⇒ Object
8 9 10 11 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 8 def page return @page if @page @page = @client.get(path, ) end |
#page_array ⇒ Object
23 24 25 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 23 def page_array @page_array ||= page[self.class::DATA_KEY] end |
#page_children ⇒ Object
27 28 29 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 27 def page_children @page_children ||= page_array.map { |d| self.class::CHILD_CLASS.new @client, d, path } end |
#page_size ⇒ Object
35 36 37 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 35 def page_size @page_size ||= DEFAULT_PAGE_SIZE end |
#parse_options(options = {}) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/mailchimp_api_v3/collection/paging.rb', line 61 def ( = {}) if @offset = ['start'] if .key? 'start' @page_size = ['page_size'] if .key? 'page_size' end invalidate_current_page end |