class Taleo::Cursor

Pages through results of a search query

Attributes

client[R]
klass[R]
pagination[R]
resource[R]
results[R]

Public Class Methods

new(pagination, results, resource, klass, client) click to toggle source
# File lib/taleo/cursor.rb, line 8
def initialize(pagination, results, resource, klass, client)
  @pagination = pagination
  @results = results
  @resource = resource
  @klass = klass
  @client = client
end

Public Instance Methods

has_next?() click to toggle source
# File lib/taleo/cursor.rb, line 22
def has_next?
  pagination.key?('next')
end
has_previous?() click to toggle source
# File lib/taleo/cursor.rb, line 26
def has_previous?
  pagination.key?('previous')
end
has_self?() click to toggle source
# File lib/taleo/cursor.rb, line 30
def has_self?
  pagination.key?('self')
end
items() click to toggle source
# File lib/taleo/cursor.rb, line 16
def items
  results.map do |i|
    klass.new(i.fetch(resource), client)
  end
end
next_page() click to toggle source
# File lib/taleo/cursor.rb, line 42
def next_page
  raise Taleo::Error.new('No further results') unless has_next?

  res = client.connection.get do |req|
    req.url pagination.fetch('next')
  end

  new_cursor(res)
end
previous_page() click to toggle source
# File lib/taleo/cursor.rb, line 52
def previous_page
  raise Taleo::Error.new('No prior results') unless has_previous?

  res = client.connection.get do |req|
    req.url pagination.fetch('previous')
  end

  new_cursor(res)
end
self_page() click to toggle source
# File lib/taleo/cursor.rb, line 34
def self_page
  res = client.connection.get do |req|
    req.url pagination.fetch('self')
  end

  new_cursor(res)
end

Private Instance Methods

new_cursor(res) click to toggle source
# File lib/taleo/cursor.rb, line 64
def new_cursor(res)
  data = JSON.parse(res.body)
  pagination = data.dig('response', 'pagination')
  results = data.dig('response', 'searchResults')
  Cursor.new(pagination, results, resource, klass, client)
end