5个版本

0.1.6 2021年6月10日
0.1.5 2021年6月9日

#2 in #coin-gecko

每月 22 次下载

MIT/Apache

56KB
1.5K SLoC

gecko

一个简单的库,用于访问coingecko的API。

依赖

[dependecies]
tokio = { version = "1", features = ["full"] }
gecko = { version = "0.1.6" } 

示例

use gecko;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
   let gecko_client = gecko::CoinGeckoAPI::default();
   let coins_list = gecko::coins::List::required();
   let response = gecko_client(&coins_list).await.unwrap();
   println!("{:?}", response):
}

注意

测试仅涵盖API端点可访问(200代码)。响应被转换为serde json值,并未测试预期值的正确性。

ps

这是我第一个Rust项目,所以请友好对待 :)


lib.rs:

gecko

gecko包提供对coingeckos api的便捷访问。该包的重点在于访问/检索coingecko API端点中的数据,而不是便利性或操作响应/数据。尽管如此,如果不需要原始文本响应,该包具有提供coingeckos API响应的JSON对象的功能。

注意: Coingeckos API每分钟有100次请求的限制。

示例

默认

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
   let gecko_client = gecko::CoinGeckoAPI::default();
   let coins_list = gecko::coins::List::required();
   let response = gecko_client.get_json(&coins_list).await.unwrap();
   println!("{:?}", response);
   Ok(())
}

自定义

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
   let gecko_client = gecko::CoinGeckoAPI::default();
   let mut coins_list = gecko::coins::Info::required("premia".to_string());
   coins_list.tickers = false;
   let response = gecko_client.get_json(&coins_list).await.unwrap();
   println!("{:?}", response["id"]);
   Ok(())
}

或者如果您不希望请求对象为可变变量...

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
   let gecko_client = gecko::CoinGeckoAPI::default();
   let coins_list = {
      let mut _tmp = gecko::coins::Info::required("premia".to_string());
      _tmp.tickers = false;
      _tmp
   };
   let response = gecko_client.get_json(&coins_list).await.unwrap();
   println!("{:?}", response["id"]);
   Ok(())
}

更多关于CoinGecko API的信息可以在这里找到。Route特质可以被实现,以使结构体能够被[CoinGeckoAPI]使用

依赖

~6–18MB
~259K SLoC