use hey_sdk::services::contacts::ListContactsParams;
use hey_sdk::{Client, Config, Error, StaticTokenProvider};
#[tokio::main]
async fn main() -> Result<(), Error> {
let token = std::env::var("HEY_TOKEN")
.map_err(|_| Error::usage("set HEY_TOKEN to a HEY access token"))?;
let client = Client::builder(Config::default())
.token_provider(StaticTokenProvider::new(token))
.max_pages(50)
.build()?;
let mut page = client
.contacts()
.list(&ListContactsParams::default())
.await?;
if let Some(total) = page.total_count() {
println!("{total} contacts");
}
let mut seen = page.len();
while let Some(next) = client.next_page(&page).await? {
seen += next.len();
page = next;
}
println!("{seen} contacts across the pages read one by one");
let first = client
.contacts()
.list(&ListContactsParams::default())
.await?;
let mut names = Vec::new();
client
.each_page(first, |page| {
names.extend(page.iter().filter_map(|contact| contact.name.clone()));
true
})
.await?;
println!("{} named contacts", names.len());
Ok(())
}