run_all_examples/
get_accounts.rs

1pub(crate) use futures::{pin_mut, stream::StreamExt};
2
3use coinbase_v3::{accounts::Account, basic_oauth::OAuthCbClient, client::CbClient, utils};
4
5#[allow(dead_code)]
6#[tokio::main]
7async fn main() {
8    let (client_id, client_secret, redirect_url) = utils::get_env_variables();
9    let oauth_cb_client = OAuthCbClient::new(&client_id, &client_secret, &redirect_url)
10        .add_scope("wallet:accounts:read")
11        .authorize_once()
12        .await;
13
14    let cb_client = CbClient::new(&oauth_cb_client);
15    run_list_get_accounts(&cb_client).await;
16
17    oauth_cb_client.revoke_access().await;
18}
19
20pub async fn run_list_get_accounts(cb_client: &CbClient<'_>) {
21    let limit = Some(4);
22    let accounts_stream = cb_client.list_accounts(limit, None);
23    pin_mut!(accounts_stream);
24
25    let mut accounts = Vec::<Account>::new();
26    while let Some(account_result) = accounts_stream.next().await {
27        let partial_accounts = account_result.unwrap();
28        println!("Got {} accounts", partial_accounts.len());
29        for account in partial_accounts {
30            accounts.push(account);
31        }
32    }
33    println!("Got {} accounts in total.", accounts.len());
34
35    let account = &accounts[0];
36    let acc = cb_client.get_account(account.uuid).await.unwrap();
37    assert_eq!(account, &acc);
38}