class EventbriteSDK::ResourceList

Attributes

expansion[R]
key[R]
object_class[R]
objects[R]
query[R]
request[R]
url_base[R]

Public Class Methods

new( url_base: nil, object_class: nil, key: nil, query: {}, request: EventbriteSDK ) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 8
def initialize(
  url_base: nil,
  object_class: nil,
  key: nil,
  query: {},
  request: EventbriteSDK
)
  @key = key
  @object_class = object_class
  @objects = []
  @query = query
  @request = request
  @url_base = url_base
end

Public Instance Methods

concat(other) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 23
def concat(other)
  other.concat(to_ary)
end
continue(continuation_token: nil, api_token: nil) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 27
def continue(continuation_token: nil, api_token: nil)
  continuation_token ||= continuation

  return unless continuation_token || has_more_items

  retrieve(
    api_token: api_token,
    query: {continuation: continuation_token}
  )
end
next_page(api_token: nil) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 52
def next_page(api_token: nil)
  return if page_number >= (page_count || 1)

  page(page_number + 1, api_token: api_token)
end
page(num, api_token: nil) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 45
def page(num, api_token: nil)
  retrieve(
    api_token: api_token,
    query: { page: num },
  )
end
prev_page(api_token: nil) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 58
def prev_page(api_token: nil)
  return if page_number <= 1

  page(page_number - 1, api_token: api_token)
end
retrieve(query: {}, api_token: nil) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 38
def retrieve(query: {}, api_token: nil)
  @query.merge!(query)
  load_response(api_token)

  self
end
to_ary() click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 75
def to_ary
  objects
end
to_json(opts = {}) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 79
def to_json(opts = {})
  { key => objects.map(&:to_h), 'pagination' => @pagination }.to_json(opts)
end
with_expansion(*args) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 83
def with_expansion(*args)
  if args.first
    @query[:expand] = args.join(',')
  else
    @query.delete(:expand)
  end

  self
end

Private Instance Methods

load_response(api_token) click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 107
def load_response(api_token)
  response = request.get(api_token: api_token, query: query.dup, url: url_base)

  @objects = (response[key.to_s] || []).map { |raw| object_class.new(raw) }
  @pagination = response['pagination']
end
pagination() click to toggle source
# File lib/eventbrite_sdk/resource_list.rb, line 103
def pagination
  @pagination ||= { 'page_count' => 1, 'page_number' => 1 }
end