fetch_accounts/
fetch_accounts.rs1use beeper_desktop_api::BeeperClient;
2use std::env;
3
4#[tokio::main]
5async fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let token = env::var("BEEPER_TOKEN")
8 .unwrap_or_else(|_| {
9 eprintln!("Error: BEEPER_TOKEN environment variable not set");
10 eprintln!("Usage: BEEPER_TOKEN=your_token cargo run --example fetch_accounts");
11 std::process::exit(1);
12 });
13
14 let base_url = env::var("BEEPER_API_URL")
16 .unwrap_or_else(|_| "http://localhost:23373".to_string());
17
18 println!("Connecting to Beeper Desktop API at: {}", base_url);
19 println!();
20
21 let client = BeeperClient::new(&token, &base_url);
23
24 println!("👤 Fetching connected accounts...");
26 let accounts = client.get_accounts().await?;
27
28 println!("✅ Successfully retrieved {} account(s):", accounts.len());
29 println!();
30
31 if accounts.is_empty() {
32 println!("No accounts connected.");
33 } else {
34 for (index, account) in accounts.iter().enumerate() {
36 let account_id = &account.account_id;
37 let network = &account.network;
38 let user = &account.user;
39
40 let user_identifier = if let Some(full_name) = &user.full_name {
42 full_name.clone()
43 } else if let Some(username) = &user.username {
44 format!("@{}", username)
45 } else if let Some(phone) = &user.phone_number {
46 phone.clone()
47 } else {
48 user.id.clone()
49 };
50
51 println!(" {}. {} Account", index + 1, network);
52 println!(" └─ User: {}", user_identifier);
53 println!(" └─ Account ID: {}", account_id);
54 println!(" └─ User ID: {}", user.id);
55
56 if let Some(username) = &user.username {
58 println!(" └─ Username: @{}", username);
59 }
60 if let Some(phone) = &user.phone_number {
61 println!(" └─ Phone: {}", phone);
62 }
63 if let Some(email) = &user.email {
64 println!(" └─ Email: {}", email);
65 }
66 if let Some(cannot_message) = user.cannot_message {
67 if cannot_message {
68 println!(" └─ ⚠️ Cannot initiate messages to this user");
69 }
70 }
71
72 println!();
73 }
74 }
75
76 println!("Account details (JSON):");
77 println!("{:#?}", accounts);
78
79 Ok(())
80}