Class: Candid::Internal::CursorPageIterator
- Inherits:
-
Object
- Object
- Candid::Internal::CursorPageIterator
- Includes:
- Enumerable
- Defined in:
- lib/candid/internal/iterators/cursor_page_iterator.rb
Instance Method Summary collapse
-
#each(&block) ⇒ NilClass
Iterates over each page returned by the API.
-
#get_next ⇒ Boolean
Retrieves the next page from the API.
-
#has_next? ⇒ Boolean
Whether another page will be available from the API.
-
#initialize(initial_cursor:, cursor_field:, &block) ⇒ Candid::Internal::CursorPageIterator
constructor
Instantiates a CursorPageIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields pages of items.
Constructor Details
#initialize(initial_cursor:, cursor_field:, &block) ⇒ Candid::Internal::CursorPageIterator
Instantiates a CursorPageIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields pages of items.
14 15 16 17 18 19 |
# File 'lib/candid/internal/iterators/cursor_page_iterator.rb', line 14 def initialize(initial_cursor:, cursor_field:, &block) @need_initial_load = initial_cursor.nil? @cursor = initial_cursor @cursor_field = cursor_field @get_next_page = block end |
Instance Method Details
#each(&block) ⇒ NilClass
Iterates over each page returned by the API.
25 26 27 28 29 |
# File 'lib/candid/internal/iterators/cursor_page_iterator.rb', line 25 def each(&block) while (page = get_next) block.call(page) end end |
#get_next ⇒ Boolean
Retrieves the next page from the API.
41 42 43 44 45 46 47 48 |
# File 'lib/candid/internal/iterators/cursor_page_iterator.rb', line 41 def get_next return if !@need_initial_load && @cursor.nil? @need_initial_load = false next_page = @get_next_page.call(@cursor) @cursor = next_page.send(@cursor_field) next_page end |
#has_next? ⇒ Boolean
Whether another page will be available from the API.
34 35 36 |
# File 'lib/candid/internal/iterators/cursor_page_iterator.rb', line 34 def has_next? @need_initial_load || !@cursor.nil? end |