1#![allow(clippy::result_large_err)]
7
8use bitculator::{Client, Error, Page, Params};
9use serde_json::Value;
10
11fn main() -> Result<(), Error> {
12 let key = std::env::var("BITCULATOR_API_KEY").unwrap_or_default();
13 let base =
14 std::env::var("BITCULATOR_BASE_URL").unwrap_or_else(|_| "https://bitculator.com".into());
15 let client = Client::builder(key).base_url(base).build();
16
17 client.meta().ping::<Value>()?;
18
19 let bitcoin: Value = client.coins().get("bitcoin", Params::new())?;
21 println!("BTC price: {}", bitcoin["price"]); let page: Page<Value> = client
25 .coins()
26 .list(Params::new().set("per_page", 5).set("sort", "-marketcap"))?;
27 for coin in &page.data {
28 println!("#{} {} {}", coin["rank"], coin["symbol"], coin["price"]);
29 }
30
31 let gainers: Page<Value> = client.coins().gainers(Params::new().set("per_page", 20))?;
33 for (i, item) in gainers.auto_paging().enumerate() {
34 let coin = item?;
35 println!("gainer: {}", coin["symbol"]);
36 if i >= 39 {
37 break;
38 }
39 }
40
41 println!("quota: {:?}", client.quota());
42 Ok(())
43}