1use std::process;
10use std::str::FromStr;
11use clap::Parser;
12use solana_pubkey::Pubkey;
13use tracing::{info};
14use tracing_subscriber::EnvFilter;
15use bulk_client::api::{BulkHttpClient};
16use bulk_client::api::parts::HttpConfig;
17
18#[derive(Parser, Debug)]
19#[command(name = "md_query", about = "Query MD")]
20struct Args {
21 #[arg(long, default_value = "https://exchange-api2.bulk.trade/api/v1")]
23 url: String,
24
25 #[arg(long, default_value = "BTC-USD")]
27 symbol: String,
28}
29
30#[tokio::main]
31async fn main() -> eyre::Result<()> {
32 tracing_subscriber::fmt()
33 .with_env_filter(
34 EnvFilter::from_default_env().add_directive(tracing::Level::INFO.into())
35 )
36 .init();
37
38 let args = Args::parse();
39
40 info!("Connecting to {} for symbol: {:?}", args.url, args.symbol);
41 let client = BulkHttpClient::new(&HttpConfig {
42 base_url: args.url,
43 signer: None,
44 ..Default::default()
45 }).unwrap();
46
47 let book = client.get_orderbook(&args.symbol, None, None).await?;
48 eprintln!("book: {:?}\n", book);
49
50 let ticker = client.get_ticker(&args.symbol).await?;
51 eprintln!("ticker: {:?}\n", ticker);
52
53 let markets = client.get_exchange_info().await?;
54 eprintln!("markets: {:?}\n", markets);
55
56 process::exit(0);
57}