Skip to main content

account_query/
account_query.rs

1//! Example: Listen to ticker and L2 order book updates.
2//!
3//! ```bash
4//! cargo run --example md_listener -- \
5//!     --url wss://exchange-wss.bulk.trade \
6//!     --symbols BTC-USD,ETH-USD
7//! ```
8
9use bulk_client::api::parts::HttpConfig;
10use bulk_client::api::BulkHttpClient;
11use clap::Parser;
12use solana_pubkey::Pubkey;
13use std::process;
14use std::str::FromStr;
15use tracing::info;
16use tracing_subscriber::EnvFilter;
17
18#[derive(Parser, Debug)]
19#[command(name = "account_query", about = "Query Account")]
20struct Args {
21    /// WebSocket URL
22    #[arg(long, default_value = "https://exchange-api2.bulk.trade/api/v1")]
23    url: String,
24
25    /// Account pubkey
26    #[arg(long)]
27    account: String,
28}
29
30#[tokio::main]
31async fn main() -> eyre::Result<()> {
32    tracing_subscriber::fmt()
33        .with_env_filter(EnvFilter::from_default_env().add_directive(tracing::Level::INFO.into()))
34        .init();
35
36    let args = Args::parse();
37
38    info!("Connecting to {} for account: {:?}", args.url, args.account);
39    let client = BulkHttpClient::new(&HttpConfig {
40        base_url: args.url,
41        signer: None,
42        ..Default::default()
43    });
44
45    let addr = Pubkey::from_str(args.account.as_str())?;
46    let account = client?.get_account(addr).await;
47
48    eprintln!("account: {:?}", account);
49    process::exit(0);
50}