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
94KB
1.5K
SLoC
Library Client for Coinbase Pro
Async only support
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
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Dependencies
~8–23MB
~349K SLoC