tokio-binance

Unofficial async client for Binance.

Crates.io Documentation MIT/Apache-2 licensed Build Status

Examples

Add this in your Cargo.toml: toml [dependencies] tokio-binance = "0.2" serde_json = "1.0" tokio = { version = "0.2", features = ["macros", "time"] }

Client

```rust use tokiobinance::{AccountClient, BINANCEUSURL, ID}; use serdejson::Value;

[tokio::main]

async fn main() -> Result<(), Box> { let client = AccountClient::connect("", "", BINANCEUSURL)?; let response = client .getorder("BNBUSDT", ID::ClientOId("")) // optional: processing time for request; default is 5000, can't be above 60000. .withrecv_window(8000) // .json::() .await?; Ok(()) } ```

Websocket

```rust use tokiobinance::*; use tokio::time::{delayfor, Duration}; use serde_json::Value;

[tokio::main]

async fn main() -> Result<(), Box> { let client = UserDataClient::connect("", BINANCEUSURL)?; let value = client.start_stream().json::().await?;

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

tokio::spawn(async move {
    loop {
        delay_for(Duration::from_secs(30*60)).await;
        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(())

} ```

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.