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 神奇豆子

Download history 62/week @ 2024-03-13 70/week @ 2024-03-20 77/week @ 2024-03-27 134/week @ 2024-04-03 76/week @ 2024-04-10 59/week @ 2024-04-17 73/week @ 2024-04-24 57/week @ 2024-05-01 54/week @ 2024-05-08 66/week @ 2024-05-15 72/week @ 2024-05-22 132/week @ 2024-05-29 218/week @ 2024-06-05 196/week @ 2024-06-12 177/week @ 2024-06-19 261/week @ 2024-06-26

每月下载量 881
5 个crate中使用 (直接使用 2 个)

MIT/Apache

120KB
3K SLoC

Build Status Crates.io Docs.rs

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