class Polar::Cursor

Constants

ITEMS_PER_PAGE

Public Class Methods

new(api_key, secret_key, session_key, domain_klass, params) click to toggle source
# File lib/polar/cursor.rb, line 6
def initialize(api_key, secret_key, session_key, domain_klass, params)
  @api_key, @secret_key, @session_key, @domain_klass, @params = api_key, secret_key, session_key, domain_klass, params
  @current_page = 0
  @fetched_current_page = false
end

Public Instance Methods

[](index) click to toggle source
# File lib/polar/cursor.rb, line 35
def [](index)
  fetch_current_page if !@fetched_current_page
  @items[index]
end
each(&block) click to toggle source

Each will return the first page of results

# File lib/polar/cursor.rb, line 13
def each(&block)
  @current_page += 1
  fetch_current_page if !@fetched_current_page
  @items.each { |i| block.call i }
  @fetched_current_page = false
end
next_page?() click to toggle source
# File lib/polar/cursor.rb, line 20
def next_page?
  if @items
    return @items.count >= ITEMS_PER_PAGE
  elsif !@items && @current_page == 0
    return true
  else
    raise("Items are nil and they should not be.")
  end
end
total_items() click to toggle source
# File lib/polar/cursor.rb, line 30
def total_items
  fetch_current_page if @total_items.nil?
  @total_items
end

Private Instance Methods

fetch_current_page() click to toggle source
# File lib/polar/cursor.rb, line 47
def fetch_current_page
  params = @params.merge({ :page => @current_page, :count => ITEMS_PER_PAGE })
  response = page_request(params)

  @items = []
  response.each do |response_item|
    @items << @domain_klass.new(response_item)
  end
  @fetched_current_page = true
end
page_request(params) click to toggle source
# File lib/polar/cursor.rb, line 42
def page_request(params)
  request = Polar::Request.new(@api_key, @secret_key, @session_key, params)
  request.response
end