class HalApi::PagedCollection

Attributes

facets[RW]
items[RW]
options[RW]
request[RW]

Public Class Methods

new(items, request=nil, options=nil) click to toggle source
# File lib/hal_api/paged_collection.rb, line 31
def initialize(items, request=nil, options=nil)
  self.items   = items
  self.request = request || request_stub
  self.options = options || {}
  self.options[:is_root_resource] = true unless (self.options[:is_root_resource] == false)
end
representer() click to toggle source
# File lib/hal_api/paged_collection.rb, line 19
def self.representer
  representer_class || HalApi::PagedCollectionRepresenter
end

Public Instance Methods

cache_key() click to toggle source
# File lib/hal_api/paged_collection.rb, line 38
def cache_key
  item_keys = items.inject([]) do |keys, i|
    keys << i.try(:id)
    keys << i.try(:updated_at).try(:utc).to_i
  end
  key_components = ['c', item_class.model_name.cache_key]
  key_components << OpenSSL::Digest::MD5.hexdigest(item_keys.join)
  ActiveSupport::Cache.expand_cache_key(key_components)
end
count() click to toggle source
# File lib/hal_api/paged_collection.rb, line 82
def count
  items.length
end
is_root_resource() click to toggle source
# File lib/hal_api/paged_collection.rb, line 52
def is_root_resource
  !!self.options[:is_root_resource]
end
item_class() click to toggle source
# File lib/hal_api/paged_collection.rb, line 60
def item_class
  options[:item_class] || self.items.first.try(:item_class) || self.items.first.class
end
item_decorator() click to toggle source
# File lib/hal_api/paged_collection.rb, line 64
def item_decorator
  options[:item_decorator] || "Api::#{item_class.name}Representer".constantize
end
parent() click to toggle source

If this is an embedded collection, the parent will be set here for use in urls

# File lib/hal_api/paged_collection.rb, line 74
def parent
  rep = options[:parent]
  return rep unless rep.respond_to?(:becomes, true)

  klass = rep.class.try(:base_class)
  klass && (klass != rep.class) ? rep.becomes(klass) : rep
end
persisted?() click to toggle source
# File lib/hal_api/paged_collection.rb, line 27
def persisted?
  false
end
request_stub() click to toggle source
# File lib/hal_api/paged_collection.rb, line 48
def request_stub
  OpenStruct.new(params: {})
end
show_curies() click to toggle source
# File lib/hal_api/paged_collection.rb, line 56
def show_curies
  is_root_resource && !options[:no_curies]
end
to_model() click to toggle source
# File lib/hal_api/paged_collection.rb, line 23
def to_model
  self
end
url() click to toggle source

url to use for the self:href, can be a string or proc

# File lib/hal_api/paged_collection.rb, line 69
def url
  options[:url]
end