binance-async 0.3.0

Rust Library for the Binance API (Async)
Documentation
use anyhow::Error;
use binance_async::{
    rest::usdm::StartUserDataStreamRequest,
    websocket::{usdm::WebsocketMessage, BinanceWebsocket},
    Binance,
};
use fehler::throws;
use futures::StreamExt;
use std::{env::var, time::Duration};
use tokio::time::timeout;

#[throws(Error)]
#[tokio::test]
async fn ws_userstream() {
    env_logger::init();

    let binance = Binance::with_key(&var("BINANCE_KEY")?);
    let listen_key = binance.request(StartUserDataStreamRequest {}).await?;
    let mut ws: BinanceWebsocket<WebsocketMessage> =
        BinanceWebsocket::new(&[listen_key.listen_key.as_str()]).await?;

    let fut = timeout(Duration::from_secs(5), ws.next());
    let msg = fut.await?.expect("ws exited")?;
    match msg {
        WebsocketMessage::AggregateTrade(agg) => println!("{agg:?}"),
        _ => unreachable!(),
    }
}