13 releases (8 breaking)

0.10.0 Mar 26, 2021
0.8.0 Feb 8, 2020
0.7.2 Jan 30, 2020
0.4.0 Dec 31, 2019

#6 in #coinbase

MIT license

94KB
1.5K SLoC

Library Client for Coinbase Pro

Async only support

Documentation

Usage

Add this in your Cargo.toml:

[dependencies]
cbpro = "0.10.0"
futures = "0.3.4"
serde_json = "^1.0.47"
tokio = { version = "^1.2.0", features = ["macros", "time"] }

Async Client

use cbpro::client::{PublicClient, SANDBOX_URL};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = PublicClient::new(SANDBOX_URL);
    let products = client.get_products().json::<serde_json::Value>().await?;
    println!("{}", serde_json::to_string_pretty(&products).unwrap());
    Ok(())
}

Async Pagination

use cbpro::client::{PublicClient, SANDBOX_URL};
use futures::TryStreamExt;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = PublicClient::new(SANDBOX_URL);
    let mut pages = client.get_trades("BTC-USD").paginate::<serde_json::Value>()?;

    while let Some(json) = pages.try_next().await? {
        println!("{}", serde_json::to_string_pretty(&json).unwrap());
        tokio::time::sleep(core::time::Duration::new(1, 0)).await;
    }
    Ok(())
}

Async Websocket

use cbpro::websocket::{Channels, WebSocketFeed, SANDBOX_FEED_URL};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut feed = WebSocketFeed::connect(SANDBOX_FEED_URL).await?;
    feed.subscribe(&["BTC-USD"], &[Channels::LEVEL2]).await?;

    while let Some(value) = feed.json::<serde_json::Value>().await? {
        println!("{}", serde_json::to_string_pretty(&value).unwrap());
    }
    Ok(())
}

Endpoints

  • Private
    • Authentication
    • Accounts
    • Orders
    • Fills
    • Deposits
    • Withdrawals
    • Payment Methods
    • Coinbase Accounts
    • Reports
    • User Account
  • Market Data
    • Products
    • Currencies
    • Time
  • Websocket Feed
    • heartbeat
    • ticker
    • level2
    • user
    • matches
    • full

FIX API

by request

License

Licensed under

Dependencies

~9–24MB
~375K SLoC