class ElasticWeb::ResourceCollection

Attributes

collection[R]
options[R]
pager[R]

Public Class Methods

new(original_data, options = {}) click to toggle source
# File lib/elasticweb/resource_collection.rb, line 7
def initialize(original_data, options = {})
  original_data.merge!({ data: [] }) unless original_data.dig(:data).is_a?(Array)

  data = original_data.dig(:data)
  @collection = Array(data).map do |resource|
    Resource.new(data: resource)
  end

  if (pager = original_data.delete(:pager))
    @pager = OpenStruct.new({
        total: pager[:total],
        per_page: pager[:per_page],
        current_page: pager[:current_page],
        next_page_url: pager[:next_page_url],
        prev_page_url: pager[:prev_page_url]
    })
  else
    @pager = nil
  end

  references = original_data.delete(:references) { Hash.new }
  @refs = references.present? ? OpenStruct.new(parse_references(references)) : nil
  @options = options.with_indifferent_access
end

Public Instance Methods

each() { |item| ... } click to toggle source
# File lib/elasticweb/resource_collection.rb, line 32
def each
  return enum_for(:each) unless block_given?

  @collection.each { |item| yield item }
end