use anyhow::{Context, Result};
use std::env;
use tracing::info;
use binance_sdk::config::ConfigurationWebsocketApi;
use binance_sdk::logger;
use binance_sdk::spot::{SpotWsApi, websocket_api::SessionStatusParams};
#[tokio::main]
async fn main() -> Result<()> {
logger::init();
let api_key = env::var("API_KEY").expect("API_KEY must be set in the environment");
let api_secret = env::var("API_SECRET").expect("API_SECRET must be set in the environment");
let ws_api_conf = ConfigurationWebsocketApi::builder()
.api_key(api_key)
.api_secret(api_secret)
.build()?;
let ws_api_client = SpotWsApi::production(ws_api_conf);
let connection = ws_api_client
.connect()
.await
.context("Failed to connect to WebSocket API")?;
let params = SessionStatusParams::default();
let response = connection
.session_status(params)
.await
.context("session_status request failed")?;
info!(?response.rate_limits, "session_status rate limits");
let data = response.data()?;
info!(?data, "session_status data");
connection
.disconnect()
.await
.context("Failed to disconnect WebSocket client")?;
Ok(())
}