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

Update GitLab-API-Iterator.md

parent 70770e31
Loading
Loading
Loading
Loading
+40 −32
Original line number Diff line number Diff line
# NAME

GitLab::API::Iterator - iterator for paginated responses
`GitLab::API::Iterator` - iterator for paginated responses

# SYNOPSIS

```{.pl}
use GitLab::API;
use GitLab::Users;

@@ -23,6 +24,7 @@ GitLab::API::Iterator - iterator for paginated responses
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()`

    ```{.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()`

    ```{.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()`

    ```{.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()`

    ```{.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)
- [`GitLab`](GitLab.md)

        use GitLab;

    Wrapper around [GitLab::API](https://metacpan.org/pod/GitLab::API) and other modules.
    Wrapper around [`GitLab::API`](GitLab-API.md) and other modules.