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