Sha256: 72cb28407e207231fedd6e8564aeba881c8c215ba9fd888f80f1a21d0d6745b7

Contents?: true

Size: 1.25 KB

Versions: 19

Compression:

Stored size: 1.25 KB

Contents

module RemoteResource
  class Collection
    include Enumerable

    attr_reader :resource_klass, :resources_collection
    attr_accessor :last_request, :last_response, :meta

    delegate :[], :at, :reverse, :size, to: :to_a

    def initialize(resource_klass, resources_collection, options = {})
      @resource_klass       = resource_klass
      @resources_collection = resources_collection
      @options              = options
    end

    def each(&block)
      return nil if !resources_collection.is_a?(Array)

      if defined?(@collection)
        @collection.each(&block)
      else
        @collection = []
        resources_collection.each do |element|
          record = resource_klass.new(element.merge(@options))
          @collection.push(record)
        end
        @collection.each(&block)
      end
    end

    def empty?
      resources_collection.blank?
    end

    def success?
      last_response.success?
    end

    def last_request
      @last_request ||= @options[:last_request]
    end

    def last_response
      @last_response ||= @options[:last_response]
    end

    def meta
      @meta ||= @options[:meta]
    end

    def _response
      warn '[DEPRECATION] `._response` is deprecated. Please use `.last_response` instead.'
    end

  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
ddy_remote_resource-1.3.4 lib/remote_resource/collection.rb
ddy_remote_resource-1.3.3 lib/remote_resource/collection.rb
ddy_remote_resource-1.3.2 lib/remote_resource/collection.rb
ddy_remote_resource-1.3.1 lib/remote_resource/collection.rb
ddy_remote_resource-1.2.3 lib/remote_resource/collection.rb
ddy_remote_resource-1.2.2 lib/remote_resource/collection.rb
ddy_remote_resource-1.2.1 lib/remote_resource/collection.rb
ddy_remote_resource-1.2.0 lib/remote_resource/collection.rb
ddy_remote_resource-1.1.2 lib/remote_resource/collection.rb
ddy_remote_resource-1.1.1 lib/remote_resource/collection.rb
ddy_remote_resource-1.1.0 lib/remote_resource/collection.rb
ddy_remote_resource-1.0.5 lib/remote_resource/collection.rb
ddy_remote_resource-1.0.4 lib/remote_resource/collection.rb
ddy_remote_resource-1.0.3 lib/remote_resource/collection.rb
ddy_remote_resource-1.0.2 lib/remote_resource/collection.rb
ddy_remote_resource-1.0.1 lib/remote_resource/collection.rb
ddy_remote_resource-1.0.0 lib/remote_resource/collection.rb
ddy_remote_resource-1.0.0.rc7 lib/remote_resource/collection.rb
ddy_remote_resource-1.0.0.rc6 lib/remote_resource/collection.rb