Crate tokio_binance[][src]

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