run_all_examples/
get_accounts.rs1pub(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}