Crates.io | calamari |
lib.rs | calamari |
version | 0.1.1 |
source | src |
created_at | 2021-05-22 14:52:36.517677 |
updated_at | 2024-10-20 10:12:29.298352 |
description | Minimal, elegant and async REST API client for the Kraken cryptocurrency exchange |
homepage | |
repository | https://github.com/rubik/calamari |
max_upload_size | |
id | 400845 |
size | 80,983 |
Calamari is a REST API client for Kraken.
The API client comes in two flavors: PublicApiClient
and PrivateApiClient
.
The former has access to the public methods only, the latter to all endpoints.
This is enforced at compile-time, as all the endpoints are defined statically
in the traits PublicEndpoints
and PrivateEndpoints
.
use calamari::{PublicApiClient, PublicEndpoints};
// Note: to run this example you will need to add Tokio to your dependencies:
// tokio = { version = "1.0", features = ["macros", "rt-multi-thread"] }
#[tokio::main]
async fn main() {
let client = PublicApiClient::default();
println!("Server time: {}", client.time().await.unwrap());
println!("System status: {}", client.system_status().await.unwrap());
println!("Ticker: {}", client.ticker("pair=XBTUSD".into()).await.unwrap());
}
Each endpoint accepts either zero arguments or a single argument containing all
the request parameters in urlencode format. All endpoints return a String
containing the JSON response from the server, leaving the user with complete
freedom in how they want to handle it.
A PrivateApiClient
can be instantiated directly, or created from an existing
PublicApiClient
by supplying the API credentials with the set_credentials
method.
use calamari::{ApiCredentials, PrivateApiClient, PublicEndpoints, PrivateEndpoints};
#[tokio::main]
async fn main() {
let credentials = ApiCredentials::new(
"YOUR_API_KEY".into(),
"YOUR_API_SECRET".into(),
);
let client = PrivateApiClient::default_with_credentials(credentials);
// Alternatively, if `client` is already a `PublicApiClient`:
// let client = client.set_credentials(credentials);
println!("Server time: {}", client.time().await.unwrap());
println!("System status: {}", client.system_status().await.unwrap());
println!("Ticker: {}", client.ticker("pair=XBTUSD".into()).await.unwrap());
println!("Account balance: {}", client.balance().await.unwrap());
println!("Open orders: {}", client.open_orders("trades=true".into()).await.unwrap());
}
The complete documentation is available on docs.rs.