31个发布版本
0.8.1 | 2022年9月2日 |
---|---|
0.7.1 | 2021年5月31日 |
0.6.9 | 2021年1月30日 |
0.6.2 | 2020年11月24日 |
0.2.8 | 2018年11月13日 |
#2442 in 神奇豆子
每月下载量 881
在 5 个crate中使用 (直接使用 2 个)
120KB
3K SLoC
Coinbase pro客户端,用于Rust
支持SYNC/ASYNC/Websocket-feed数据支持
功能
- 私有和公共API
- 同步和异步支持
- websocket-feed支持
示例
Cargo.toml
[dependencies]
coinbase-pro-rs = "0.7.1"
异步
use hyper::rt::Future;
use coinbase_pro_rs::{Public, ASync, SANDBOX_URL};
fn main() {
let client: Public<ASync> = Public::new_with_keep_alive(SANDBOX_URL, false);
// if keep_alive is not disables - tokio::run will hold the connection without exiting the example
let f = client.get_time()
.map_err(|_| ())
.and_then(|time| {
println!("Coinbase.time: {}", time.iso);
Ok(())
});
tokio::run(f); // waiting for tokio
}
同步
use coinbase_pro_rs::{Public, Sync, SANDBOX_URL};
fn main() {
let client: Public<Sync> = Public::new(SANDBOX_URL);
let time = client.get_time().unwrap();
println!("Coinbase.time: {}", time.iso);
}
Websocket
use futures::{Future, Stream};
use coinbase_pro_rs::{WSFeed, WS_SANDBOX_URL};
use coinbase_pro_rs::structs::wsfeed::*;
fn main() {
let stream = WSFeed::connect(WS_SANDBOX_URL,
&["BTC-USD"], &[ChannelType::Heartbeat])
.await
.unwrap();
let f = stream
.take(10)
.for_each(|msg| {
match msg {
Message::Heartbeat {sequence, last_trade_id, time, ..} => println!("{}: seq:{} id{}",
time, sequence, last_trade_id),
Message::Error {message} => println!("Error: {}", message),
Message::InternalError(_) => panic!("internal_error"),
other => println!("{:?}", other)
}
Ok(())
});
tokio::run(f.map_err(|_| panic!("stream fail")));
}
支持的API
- 同步
- 异步
- Websocket-Feed
API
- 请求
- 分页
- 类型
- 私有
- 身份验证
- 账户
- 订单
- 成交
- 存款
- 列表
- 取款
- 列表
- 支付方式
- Coinbase账户
- 费用
- 报告
- 用户账户
- 市场数据
- 产品
- 货币
- 时间
- Websocket Feed
- 心跳
- 行情
- 深度
- 用户
- 匹配
- 全部
FIX API
按需
订单簿
https://github.com/inv2004/orderbook-rs
测试
cargo test
依赖项
~9–22MB
~332K SLoC