10 个版本
0.2.2 | 2020 年 3 月 18 日 |
---|---|
0.2.1 | 2020 年 2 月 12 日 |
0.2.0 | 2020 年 1 月 31 日 |
0.1.7 | 2019 年 6 月 16 日 |
0.1.1 | 2018 年 10 月 28 日 |
#98 在 #cryptocurrency
每月 35 次下载
140KB
3K SLoC
bitmex-rs
BitMEX (非官方)的 Rust 客户端,支持异步/等待!
注意事项
请在使用之前运行测试,因为 BitMEX 经常在不更改其 Swagger API 定义的情况下引入破坏性更改。
此外,Swagger 定义似乎与 BitMEX 的实际 API 不一致。由于 bitmex-rs 从 swagger.json 自动生成代码,您可能会遇到一些 API 故障。请随时提交问题!
使用方法
将以下内容添加到您的 Cargo.toml 中
[dependencies]
bitmex = "0.2"
基本用法
// This will give you a BitMEX instance, which the only purpose is to create connection.
let bm = bitmex::BitMEX::with_credential(&std::env::var("BITMEX_KEY")?, &std::env::var("BITMEX_SECRET")?);
// All the requests to BitMEX server afterwards will go through HTTP Restful API.
// The request models reside in "bitmex::models" module, with the
// naming convention of "Method+camelCase(endpoint)+Request", e.g. "GET /trade/bucketed" would be
// "bitmex::models::GetTradeBucketedRequest" in bitmex-rs.
let req = bitmex::models::GetTradeBucketedRequest {
bin_size: Some(bitmex::models::BinSize::D1),
..Default::default()
};
// Request to BitMEX server is made by giving "BitMEX::request" the request object.
// The return type of "BitMEX::request" is a future of the response so that you can await on it.
let resp = bm.request(req).await?;
println!("Bucketed trades: {:?}", resp);
// A websocket is created by "BitMEX::websocket".
let mut ws = bm.websocket().await?;
// The websocket is a duplex channel which means you can send "bitmex::websocket::Command" to BitMEX and
// receive "bitmex::websocket::Message" from BitMEX using it.
let expires = (Utc::now() + Duration::seconds(30)).timestamp();
ws.send(Command::authenticate(&bm, expires).unwrap()).await?;
// In order to get the ws messages, just poll the ws stream.
while let Some(message) = ws.next().await {
println!("Subscription message received {:?}", message);
}
更多示例位于 examples 和 tests 文件夹中。
实现状态
目前所有 API 功能都已实现,包括 WebSocket!
依赖关系
~20–33MB
~644K SLoC