Class: Algolia::PaginatorIterator
- Inherits:
-
BaseIterator
- Object
- BaseIterator
- Algolia::PaginatorIterator
- Defined in:
- lib/algolia/iterators/paginator_iterator.rb
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from BaseIterator
#index_name, #opts, #transporter
Instance Method Summary collapse
- #each ⇒ Object
- #get_endpoint ⇒ Object
-
#initialize(transporter, index_name, opts) ⇒ PaginatorIterator
constructor
A new instance of PaginatorIterator.
Methods included from Helpers
#check_array, #check_object, #chunk, #deserialize_settings, #get_object_id, #get_option, #handle_params, #hash_includes_subset?, included, #json_to_hash, #path_encode, #symbolize_hash, #to_json, #to_query_string
Constructor Details
#initialize(transporter, index_name, opts) ⇒ PaginatorIterator
Returns a new instance of PaginatorIterator.
7 8 9 10 11 12 13 14 |
# File 'lib/algolia/iterators/paginator_iterator.rb', line 7 def initialize(transporter, index_name, opts) super(transporter, index_name, opts) @data = { hitsPerPage: 1000, page: 0 } end |
Instance Method Details
#each ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/algolia/iterators/paginator_iterator.rb', line 16 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 |
#get_endpoint ⇒ Object
42 43 44 |
# File 'lib/algolia/iterators/paginator_iterator.rb', line 42 def get_endpoint raise AlgoliaError, 'Method must be implemented' end |