Sha256: 728873d8cd5866ceef1de6ec39f4df30296f6532fdf37882d47905f07ac59097

Contents?: true

Size: 1.18 KB

Versions: 5

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module NgrokAPI
  module Models
    ##
    # A resource representing multiple instances from a given "list" API call
    class Listable
      include Enumerable

      attr_reader :client,
        :klass,
        :iter,
        :items,
        :list_property,
        :next_page_uri,
        :result,
        :uri

      def initialize(danger: false, client:, result:, list_property:, klass:)
        @client = client
        @result = result
        @list_property = list_property
        @next_page_uri = @result['next_page_uri']
        @uri = @result['uri']
        @items = @result[list_property].map do |item|
          klass.new(client: client, result: item)
        end
        @iter = NgrokAPI::PagedIterator.new(
          client: client,
          page: self,
          list_property: list_property,
          danger: danger
        )
      end

      def each
        item = @iter.get_next
        while item
          yield item
          item = @iter.get_next
        end
      end

      def ==(other)
        @result == other.result
      end

      def to_s
        @result.to_s
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ngrok-api-0.18.0 lib/ngrokapi/models/listable.rb
ngrok-api-0.17.0 lib/ngrokapi/models/listable.rb
ngrok-api-0.16.0 lib/ngrokapi/models/listable.rb
ngrok-api-0.15.0 lib/ngrokapi/models/listable.rb
ngrok-api-0.14.0 lib/ngrokapi/models/listable.rb