class MagicBell::ApiResourceCollection

Attributes

response[R]
response_hash[R]

Public Class Methods

new(client, query_params = {}) click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 3
def initialize(client, query_params = {})
  @client = client
  @query_params = query_params
  @retrieved = false
end

Public Instance Methods

authentication_headers() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 34
def authentication_headers
  MagicBell.authentication_headers
end
current_page() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 59
def current_page
  retrieve_unless_retrieved
  response_hash["current_page"]
end
each(&block) click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 38
def each(&block)
  resources.each(&block)
end
each_page() { |current_page| ... } click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 42
def each_page
  current_page = self
  loop do
    yield(current_page)
    break if current_page.last_page?
    current_page = current_page.next_page
  end
end
first() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 26
def first
  resources.first
end
last_page?() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 51
def last_page?
  current_page == total_pages
end
next_page() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 55
def next_page
  self.class.new(@client, page: current_page + 1, per_page: per_page)
end
per_page() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 69
def per_page
  retrieve_unless_retrieved
  response_hash["per_page"]
end
retrieve() click to toggle source

@todo Add examples

# File lib/magicbell/api_resource_collection.rb, line 10
def retrieve
  @response = @client.get(
    url,
    query: @query_params
  )
  @response_hash = JSON.parse(response.body)
  @resources = response_hash[name].map { |resource_attributes| resource_class.new(@client, resource_attributes) }
  @retrieved = true

  self
end
to_a() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 22
def to_a
  resources
end
total_pages() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 64
def total_pages
  retrieve_unless_retrieved
  response_hash["total_pages"]
end
url() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 30
def url
  MagicBell.api_host + path
end

Private Instance Methods

resources() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 79
def resources
  retrieve_unless_retrieved
  return @resources
end
retrieve_unless_retrieved() click to toggle source
# File lib/magicbell/api_resource_collection.rb, line 84
def retrieve_unless_retrieved
  return if @retrieved
  retrieve
end