Rust crate for interacting with the CoinGecko v3 API.
At this time, async support is provided by isahc. I would like to have generic HTTP client support, but surf is currently unsuitable for user in a library due to it's error type not being compatible with std::Error
. The isahc
crate is suitable for now and ideal on Linux systems since it takes advantage of the system libcurl
for HTTPS support.
/ping
/simple/price
/coins/list
/coins/{id}
/coins/markets
use coingecko::{Client, SimplePriceReq};
pub fn main() {
smol::block_on(async {
let http = isahc::HttpClient::new().unwrap();
let client = Client::new(http);
let req = SimplePriceReq::new("ethereum,algorand,tezos".into(), "usd".into())
.include_market_cap()
.include_24hr_vol()
.include_24hr_change()
.include_last_updated_at();
println!("{:#?}", client.simple_price(req).await);
})
}
Ok(
{
"ethereum": {
"usd": 374.01,
"usd_24h_change": 0.6764058401035155,
"usd_24h_vol": 9235228681.348743,
"usd_market_cap": 42251015530.714905,
"last_updated_at": 1602472941,
},
"algorand": {
"usd_market_cap": 266053358.9639521,
"last_updated_at": 1602472968,
"usd": 0.331298,
"usd_24h_change": 4.2444465005613035,
"usd_24h_vol": 140788809.28500596,
},
"tezos": {
"last_updated_at": 1602472989,
"usd_market_cap": 1651035262.3629265,
"usd_24h_vol": 90234644.31549962,
"usd": 2.27,
"usd_24h_change": 3.1493641962253895,
},
},
)