Sha256: 819f616bc7f4f9a6712e85f257970dadb4f7f423a08856ee9def03976ce5b92a

Contents?: true

Size: 1.09 KB

Versions: 86

Compression:

Stored size: 1.09 KB

Contents

module Alula
  class ListObject
    include Enumerable

    attr_reader :items, :type, :meta
    attr_accessor :rate_limit

    def initialize list_type
      @type = list_type
      @items = []
    end

    def length
      items.length
    end

    def each
      items.each { |i| yield i }
    end

    def[] index
      @items[index]
    end

    def first
      @items.first
    end

    def last
      @items.last
    end

    def << item
      @items << item
    end

    def set_meta(meta)
      @meta = meta
    end

    def pagination
      meta.page
    end

    def self.construct_from_response klass, response, opts
      list = ListObject.new(klass)
      response.data['data'].each do |item|
        list << klass.new(item['id']).construct_from(item)
      end
      list.set_meta Meta.new(response.data['meta'])
      list.rate_limit = response.rate_limit
      
      list
    end

    def self.construct_from_array klass, collection
      list = ListObject.new(klass)
      collection.each do |item|
        list << klass.new(item['id']).construct_from(item)
      end
      list
    end
  end
end

Version data entries

86 entries across 86 versions & 1 rubygems

Version Path
alula-ruby-2.8.1 lib/alula/list_object.rb
alula-ruby-2.8.0 lib/alula/list_object.rb
alula-ruby-2.7.0 lib/alula/list_object.rb
alula-ruby-2.6.3 lib/alula/list_object.rb
alula-ruby-2.6.2 lib/alula/list_object.rb
alula-ruby-2.6.1 lib/alula/list_object.rb
alula-ruby-2.6.0 lib/alula/list_object.rb
alula-ruby-2.5.0 lib/alula/list_object.rb
alula-ruby-2.4.0 lib/alula/list_object.rb
alula-ruby-2.3.0 lib/alula/list_object.rb
alula-ruby-2.2.0 lib/alula/list_object.rb
alula-ruby-2.1.2 lib/alula/list_object.rb
alula-ruby-2.1.1 lib/alula/list_object.rb
alula-ruby-2.1.0 lib/alula/list_object.rb
alula-ruby-2.0.0 lib/alula/list_object.rb
alula-ruby-1.10.5 lib/alula/list_object.rb
alula-ruby-1.10.4 lib/alula/list_object.rb
alula-ruby-1.10.3 lib/alula/list_object.rb
alula-ruby-1.10.2 lib/alula/list_object.rb
alula-ruby-1.10.1 lib/alula/list_object.rb