gleetube/pagination

Types

A page of results with an optional next page token.

pub type Page(a) {
  Page(items: List(a), next_page_token: option.Option(String))
}

Constructors

Values

pub fn list_all(
  fetch_page: fn(option.Option(String)) -> Result(
    Page(a),
    error.GleeTubeError,
  ),
) -> Result(List(a), error.GleeTubeError)

Fetch all pages by following next_page_token until exhausted. The fetch_page function takes an optional page token and returns a Page.

Example

let fetch = fn(token) {
  use resp <- result.try(channels.list(client,
    parts: [Snippet], filter: ById(["UC..."]),
    max_results: option.Some(50), page_token: token, hl: option.None,
  ))
  Ok(pagination.Page(items: resp.items, next_page_token: resp.next_page_token))
}
let all_channels = pagination.list_all(fetch)
pub fn list_up_to(
  fetch_page: fn(option.Option(String)) -> Result(
    Page(a),
    error.GleeTubeError,
  ),
  max_count max_count: Int,
) -> Result(List(a), error.GleeTubeError)

Fetch pages until at least max_count items are accumulated or no more pages.

Search Document