Class: HalApi::PagedCollection
- Inherits:
-
Object
- Object
- HalApi::PagedCollection
- Extended by:
- ActiveModel::Naming, Forwardable
- Defined in:
- lib/hal_api/paged_collection.rb
Instance Attribute Summary collapse
-
#items ⇒ Object
Returns the value of attribute items.
-
#options ⇒ Object
Returns the value of attribute options.
-
#request ⇒ Object
Returns the value of attribute request.
Instance Method Summary collapse
- #cache_key ⇒ Object
- #count ⇒ Object
-
#initialize(items, request = nil, options = nil) ⇒ PagedCollection
constructor
A new instance of PagedCollection.
- #is_root_resource ⇒ Object
- #item_class ⇒ Object
- #item_decorator ⇒ Object
-
#parent ⇒ Object
If this is an embedded collection, the parent will be set here for use in urls.
- #persisted? ⇒ Boolean
- #request_stub ⇒ Object
- #show_curies ⇒ Object
- #to_model ⇒ Object
-
#url ⇒ Object
url to use for the self:href, can be a string or proc.
Constructor Details
#initialize(items, request = nil, options = nil) ⇒ PagedCollection
Returns a new instance of PagedCollection.
24 25 26 27 28 29 |
# File 'lib/hal_api/paged_collection.rb', line 24 def initialize(items, request=nil, =nil) self.items = items self.request = request || request_stub self. = || {} self.[:is_root_resource] = true unless (self.[:is_root_resource] == false) end |
Instance Attribute Details
#items ⇒ Object
Returns the value of attribute items.
9 10 11 |
# File 'lib/hal_api/paged_collection.rb', line 9 def items @items end |
#options ⇒ Object
Returns the value of attribute options.
9 10 11 |
# File 'lib/hal_api/paged_collection.rb', line 9 def end |
#request ⇒ Object
Returns the value of attribute request.
9 10 11 |
# File 'lib/hal_api/paged_collection.rb', line 9 def request @request end |
Instance Method Details
#cache_key ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/hal_api/paged_collection.rb', line 31 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.(key_components) end |
#count ⇒ Object
74 75 76 |
# File 'lib/hal_api/paged_collection.rb', line 74 def count items.length end |
#is_root_resource ⇒ Object
45 46 47 |
# File 'lib/hal_api/paged_collection.rb', line 45 def is_root_resource !!self.[:is_root_resource] end |
#item_class ⇒ Object
53 54 55 |
# File 'lib/hal_api/paged_collection.rb', line 53 def item_class [:item_class] || self.items.first.try(:item_class) || self.items.first.class end |
#item_decorator ⇒ Object
57 58 59 |
# File 'lib/hal_api/paged_collection.rb', line 57 def item_decorator [:item_decorator] || "Api::#{item_class.name}Representer".constantize end |
#parent ⇒ Object
If this is an embedded collection, the parent will be set here for use in urls
67 68 69 70 71 72 |
# File 'lib/hal_api/paged_collection.rb', line 67 def parent rep = [:parent] return rep unless rep.respond_to?(:becomes) klass = rep.class.try(:base_class) (klass && (klass != rep.class)) ? rep.becomes(klass) : rep end |
#persisted? ⇒ Boolean
20 21 22 |
# File 'lib/hal_api/paged_collection.rb', line 20 def persisted? false end |
#request_stub ⇒ Object
41 42 43 |
# File 'lib/hal_api/paged_collection.rb', line 41 def request_stub OpenStruct.new(params: {}) end |
#show_curies ⇒ Object
49 50 51 |
# File 'lib/hal_api/paged_collection.rb', line 49 def show_curies is_root_resource && ![:no_curies] end |
#to_model ⇒ Object
16 17 18 |
# File 'lib/hal_api/paged_collection.rb', line 16 def to_model self end |
#url ⇒ Object
url to use for the self:href, can be a string or proc
62 63 64 |
# File 'lib/hal_api/paged_collection.rb', line 62 def url [:url] end |