Commit 0ce90d05 authored by Roman Lacko's avatar Roman Lacko
Browse files

Update GitLab-API-Iterator.md

parent 70770e31
# NAME
GitLab::API::Iterator - iterator for paginated responses
`GitLab::API::Iterator` - iterator for paginated responses
# SYNOPSIS
use GitLab::API;
use GitLab::Users;
```{.pl}
use GitLab::API;
use GitLab::Users;
my $gitlab = GitLab::API->new(...);
my $gitlab = GitLab::API->new(...);
my $users = $gitlab->users(-iterator => 1);
my $users = $gitlab->users(-iterator => 1);
while (my $user = $users->next) {
# ...
}
while (my $user = $users->next) {
# ...
}
print "Total users: ", $users->count, "\n";
print "Total users: ", $users->count, "\n";
# ...
$users->rewind;
# ...
$users->rewind;
while (my $user = $users->next()) {
# ...
}
while (my $user = $users->next()) {
# ...
}
```
# DESCRIPTION
......@@ -33,18 +35,20 @@ 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()
- `new()`
$iterator = GitLab::API::Iterator->new($api, $url, %extra)
```{.pl}
$iterator = GitLab::API::Iterator->new($api, $url, %extra)
```
Constructor.
Not intended to be called directly, ["exec\_request" in GitLab::API](https://metacpan.org/pod/GitLab::API#exec_request) constructs the instance itself.
Not intended to be called directly, [`exec_request` in GitLab::API](GitLab-API.md#exec_request) constructs the instance itself.
Arguments:
- `$api`
The [GitLab::API](https://metacpan.org/pod/GitLab::API) instance that will be used to issue calls.
The [`GitLab::API`](GitLab-API.md) instance that will be used to issue calls.
- `$url`
......@@ -55,51 +59,55 @@ Use **reset** for this kind of behaviour.
Extra arguments.
Currently only `per_page` is used, which controls how many entities in a page can the iterator request.
- next()
- `next()`
Returns the next element or `undef` if there are no elements left.
Automatically downloads next page from API if required.
- reset()
- `reset()`
$iterator->reset
```{.pl}
$iterator->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()
- `rewind()`
$iterator->rewind
```{.pl}
$iterator->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()
- `all()`
my @items = @{ $iterator->all };
```{.pl}
my @items = @{ $iterator->all };
```
Downloads all pages and returns an arrayref of all elements.
## Internal methods
- next\_block()
- `next_block()`
Tries to download the next page from the GitLab API.
Returns false if no page left or an error occured.
# AUTHOR
Roman Lacko <[xlacko1@fi.muni.cz](https://metacpan.org/pod/xlacko1@fi.muni.cz)>
Roman Lacko <[`xlacko1@fi.muni.cz`](mailto:xlacko1@fi.muni.cz)>
# SEE ALSO
- [GitLab::API](https://metacpan.org/pod/GitLab::API)
- [`GitLab::API`](GitLab-API.md)
Lightweight GitLab API client.
- [GitLab](https://metacpan.org/pod/GitLab)
use GitLab;
- [`GitLab`](GitLab.md)
Wrapper around [GitLab::API](https://metacpan.org/pod/GitLab::API) and other modules.
Wrapper around [`GitLab::API`](GitLab-API.md) 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