Crate tokio_binance

Crate tokio_binance 

Source
Expand description

Unofficial async client for Binance.

Simple and easy to use wrapper for the Binance API.

§Examples

§Client

use tokio_binance::{AccountClient, BINANCE_US_URL, ID};
use serde_json::Value;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = AccountClient::connect("<api-key>", "<secret-key>", BINANCE_US_URL)?;
    let response = client
        .get_order("BNBUSDT", ID::ClientOId("<uuid>"))
        // optional: processing time for request; default is 5000, can't be above 60000.
        .with_recv_window(8000)
        //
        .json::<Value>()
        .await?;
    Ok(())
}

§Websocket

use tokio_binance::*;
use tokio::time::Duration;
use serde_json::Value;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = UserDataClient::connect("<api-key>", BINANCE_US_URL)?;
    let value = client.start_stream().json::<Value>().await?;

    let listen_key = value["listenKey"].as_str().unwrap();
    let listen_key_copy = listen_key.to_string();

    tokio::spawn(async move {
        loop {
            std::thread::sleep(Duration::from_secs(30*60));
            if let Err(e) = client.keep_alive(&listen_key_copy).text().await {
                eprintln!("{}", e);
                return
            }
        }
    });

    let channel = Channel::UserData(listen_key);
    let mut stream = WebSocketStream::connect(channel, BINANCE_US_WSS_URL).await?;

    while let Some(value) = stream.json::<Value>().await? {
        if channel == value["stream"] {
            println!("{}", serde_json::to_string_pretty(&value)?);
        }
    }
    Ok(())
}

Modules§

builder
error
types

Structs§

AccountClient
Client for dealing with orders
GeneralClient
Client for dealing with general exchange information
MarketDataClient
Client for dealing with market data.
UserDataClient
Client for dealing with the user data stream.
WebSocketStream
Websocket stream for the various binance channels aka streams.
WithdrawalClient
Client for dealing with withdrawals and sub accounts.

Enums§

Channel
ID
Interval
Level
OrderRespType
Side
Speed
TimeInForce

Constants§

BINANCE_US_URL
https://api.binance.us
BINANCE_US_WSS_URL
wss://stream.binance.us:9443