Sha256: 4dacf16657cf67b496484396cfc37eafed47b1d7e424113f7cefc044ed100110

Contents?: true

Size: 1.24 KB

Versions: 19

Compression:

Stored size: 1.24 KB

Contents

module Algolia
  class PaginatorIterator < BaseIterator
    # @param transporter    [Transport::Transport]  transporter used for requests
    # @param index_name    [String]  Name of the index
    # @param opts [Hash] contains extra parameters to send with your query
    #
    def initialize(transporter, index_name, opts)
      super(transporter, index_name, opts)

      @data = {
        hitsPerPage: 1000,
        page: 0
      }
    end

    def each
      loop do
        if @response
          parsed_response = symbolize_hash(@response)
          parsed_data     = symbolize_hash(@data)
          if parsed_response[:hits].length
            parsed_response[:hits].each do |hit|
              hit.delete(:_highlightResult)
              yield hit
            end

            if parsed_response[:nbHits] < parsed_data[:hitsPerPage]
              @response = nil
              @data     = {
                hitsPerPage: 1000,
                page: 0
              }
              raise StopIteration
            end
          end
        end
        @response     = @transporter.read(:POST, get_endpoint, @data, @opts)
        @data[:page] += 1
      end
    end

    def get_endpoint
      raise AlgoliaError, 'Method must be implemented'
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
algolia-2.3.4 lib/algolia/iterators/paginator_iterator.rb
algolia-2.3.3 lib/algolia/iterators/paginator_iterator.rb
algolia-2.3.2 lib/algolia/iterators/paginator_iterator.rb
algolia-2.3.1 lib/algolia/iterators/paginator_iterator.rb
algolia-2.3.0 lib/algolia/iterators/paginator_iterator.rb
algolia-2.2.5 lib/algolia/iterators/paginator_iterator.rb
algolia-2.2.4 lib/algolia/iterators/paginator_iterator.rb
algolia-2.2.3 lib/algolia/iterators/paginator_iterator.rb
algolia-2.2.2 lib/algolia/iterators/paginator_iterator.rb
algolia-2.2.1 lib/algolia/iterators/paginator_iterator.rb
algolia-2.2.0 lib/algolia/iterators/paginator_iterator.rb
algolia-2.1.1 lib/algolia/iterators/paginator_iterator.rb
algolia-2.0.4 lib/algolia/iterators/paginator_iterator.rb
algolia-2.0.3 lib/algolia/iterators/paginator_iterator.rb
algolia-2.0.2 lib/algolia/iterators/paginator_iterator.rb
algolia-2.0.1 lib/algolia/iterators/paginator_iterator.rb
algolia-2.0.0 lib/algolia/iterators/paginator_iterator.rb
algolia-2.0.0.pre.beta.3 lib/algolia/iterators/paginator_iterator.rb
algolia-2.0.0.pre.beta.2 lib/algolia/iterators/paginator_iterator.rb