Commit 0836135a authored by Roman Lacko's avatar Roman Lacko
Browse files

Markdown documentation for GitLab::API::Iterator

parent cd3cf661
GitLab::API::Iterator - iterator for paginated responses
use GitLab::API;
use GitLab::Users;
my $gitlab = GitLab::API->new(...);
my $users = $gitlab->users(-iterator => 1);
while (my $user = $users->next) {
# ...
print "Total users: ", $users->count, "\n";
# ...
while (my $user = $users->next()) {
# ...
The iterator provides methods `next` and `rewind`.
It also remembers pages that have already been downloaded.
When the iterator reaches the end of data, it tries to download the next page.
Note that all entities are memoized, so rewinding the iterator will **not** cause it to request pages again.
Use **reset** for this kind of behaviour.
- new()
$iterator = GitLab::API::Iterator->new($api, $url, %extra)
Not intended to be called directly, ["exec\_request" in GitLab::API]( constructs the instance itself.
- `$api`
The [GitLab::API]( instance that will be used to issue calls.
- `$url`
[URI]( instance for the call.
- `%extra`
Extra arguments.
Currently only `per_page` is used, which controls how many entities in a page can the iterator request.
- next()
Returns the next element or `undef` if there are no elements left.
Automatically downloads next page from API if required.
- reset()
Resets the iterator to the original state that can be reused.
Clears all data and error flags, so that the requests can be issued again.
- rewind()
Resets the iterator to the position before the first element, so that the call to `next` will return the first element.
Note that this will **not** cause the iterator to re-download all pages.
Use `reset` for this purpose.
- all()
my @items = @{ $iterator->all };
Downloads all pages and returns an arrayref of all elements.
## Internal methods
- next\_block()
Tries to download the next page from the GitLab API.
Returns false if no page left or an error occured.
Roman Lacko <[](>
- [GitLab::API](
Lightweight GitLab API client.
- [GitLab](
use GitLab;
Wrapper around [GitLab::API]( and other modules.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment