class Mavenlink::List

Attributes

data[RW]
page_count[R]
page_number[R]

Public Class Methods

new(klass, response, options = {}) click to toggle source
# File lib/mavenlink/list.rb, line 12
def initialize(klass, response, options = {})
  @meta = response["meta"]
  @klass = klass
  @page_number = @meta["page_number"]
  @page_count = @meta["page_count"]
  @options = options
  results = setup_results(response)
  @data = results.map { |thing| klass.new(thing) }
end

Public Instance Methods

auto_paging_each(&blk) click to toggle source
# File lib/mavenlink/list.rb, line 26
def auto_paging_each(&blk)
  return enum_for(:auto_paging_each) unless block_given?

  page = self
  loop do
    page.each(&blk)

    break if page.last_page?

    page = page.next_page
  end
end
each(&blk) click to toggle source
# File lib/mavenlink/list.rb, line 22
def each(&blk)
  @data.each(&blk)
end
last_page?() click to toggle source
# File lib/mavenlink/list.rb, line 39
def last_page?
  @page_number == @page_count
end
next_page() click to toggle source
# File lib/mavenlink/list.rb, line 43
def next_page
  @klass.list({ page: @page_number + 1 }, @options)
end

Private Instance Methods

setup_results(response) click to toggle source
# File lib/mavenlink/list.rb, line 47
        def setup_results(response)
  results = Util.results(response)

  if (filters = Util.stringify_keys(@options[:filters]))
    results.select! do |res|
      filters.map { |key, value| res[key] == value }.all?
    end
  end

  results
end