#![allow(clippy::result_large_err)]
use bitculator::{Client, Error, Page, Params};
use serde_json::Value;
fn main() -> Result<(), Error> {
let key = std::env::var("BITCULATOR_API_KEY").unwrap_or_default();
let base =
std::env::var("BITCULATOR_BASE_URL").unwrap_or_else(|_| "https://bitculator.com".into());
let client = Client::builder(key).base_url(base).build();
client.meta().ping::<Value>()?;
let bitcoin: Value = client.coins().get("bitcoin", Params::new())?;
println!("BTC price: {}", bitcoin["price"]);
let page: Page<Value> = client
.coins()
.list(Params::new().set("per_page", 5).set("sort", "-marketcap"))?;
for coin in &page.data {
println!("#{} {} {}", coin["rank"], coin["symbol"], coin["price"]);
}
let gainers: Page<Value> = client.coins().gainers(Params::new().set("per_page", 20))?;
for (i, item) in gainers.auto_paging().enumerate() {
let coin = item?;
println!("gainer: {}", coin["symbol"]);
if i >= 39 {
break;
}
}
println!("quota: {:?}", client.quota());
Ok(())
}