6 个版本
0.3.4 | 2023年9月16日 |
---|---|
0.3.3 | 2023年6月15日 |
0.3.0 | 2023年5月8日 |
0.2.2 | 2022年12月25日 |
0.1.4-BETA |
|
#2149 in 魔法豆
51KB
1K SLoC
欢迎并感谢对改进的拉取请求和建议
Rust 的 CoinGecko API 客户端
用 Rust 编写的 CoinGecko 简单 API 客户端
可用端点
端点 | 状态 | 测试 | 功能 |
---|---|---|---|
/ping | ✓ | ping | |
/simple/price | ✓ | simple_price_short, simple_price | |
/simple/supported_vs_currencies | ✓ | ✓ | SimpleSupportedVSCurrencies |
/coins/list | ✓ | ✓ | CoinsList |
/coins/market | ✓ | ✓ | CoinsMarket |
/coins/{id} | ✓ | ✓ | CoinsID |
/coins/{id}/history | ✓ | ✓ | CoinsIDHistory |
/coins/{id}/market_chart | ✓ | ✓ | CoinsIDMarketChart |
/events/countries | 进行中 | 进行中 | EventsCountries |
/events/types | 进行中 | 进行中 | EventsType |
/exchange_rates | ✓ | ✓ | ExchangeRate |
/global | ✓ | ✓ | Global |
未来将支持比这里列出的更多 API 端点。一旦我开始工作于额外的端点,表格将被更新。
rustls 和 OpenSSL/native-tls
默认情况下,这个 Crate 使用 reqwest 的 rustls 后端,如果你需要 native-tls/openSSL,你需要激活 native-tls 功能。
rustgecko = { version = "*" , features = ["native-tls"] }
快捷方法
一些具有许多布尔标志的方法有一个简短版本,例如 "simple_price_short",如果你只想检索一些数据,并将其余参数保留为其默认值。
用法
use rustgecko::client::GeckoClient;
fn main() {
let client = GeckoClient::default();
}
在生产环境或你有 Coingecko 订阅的情况下,你可能希望提供自己的客户端带有凭证或任何其他附加配置。
use rustgecko::client::GeckoClient;
fn main() {
use reqwest::header;
let mut headers = header::HeaderMap::new();
// Consider marking security-sensitive headers with `set_sensitive`.
let mut auth_value = header::HeaderValue::from_static("secret");
auth_value.set_sensitive(true);
headers.insert("x-cg-pro-api-key", auth_value);
// get a client builder
let client = reqwest::Client::builder()
.default_headers(headers)
.build()
.unwrap();
let _ = GeckoClient::new_with_custom_client(client, "https://some.url");
}
错误处理
每个 4XX 响应都被转换为 reqwest::Error 类型的错误,并传播到调用链。
有关处理 reqwest 错误的信息,请参阅文档 -> https://docs.rs/reqwest/0.7.2/reqwest/struct.Error.html
async fn main() {
if let Err(err) = GeckoClient::default().exchangerates().await {
match err.status() {
Some(StatusCode::TOO_MANY_REQUESTS) => info!("we have to slow down"),
Some(_) => info!("Something else happened"),
None => info!("We got an error without a status code"),
}
}
}
许可证
MIT
本软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适销性、特定用途适用性或非侵权的保证。
依赖项
~8-24MB
~344K SLoC