5 releases

0.1.6 Jun 10, 2021
0.1.5 Jun 9, 2021

#2 in #coin-gecko

Download history 5/week @ 2024-02-26 5/week @ 2024-03-11 123/week @ 2024-04-01

128 downloads per month

MIT/Apache

56KB
1.5K SLoC

gecko

A simple library to access coingecko's api.

Dependecy

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

Example

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):
}

Note

The testing only covers that the api endpoints are reachable (200 code). Responses are translated into a serde json values and the correctness of expected values are not tested.

ps

this is my first rust project so be nice :)


lib.rs:

gecko

The gecko crate provides convenient access coingeckos api. The focus of this crate is on access/retreival of data from coingecko api endpoints and not on convenience or manipulating reponses/data. Although, if raw text reponses are not desired, the crate has funcitonality to provide coingeckos api response in json objects.

Note: Coingeckos api has a limit of 100 requests per minute.

Examples

Default

#[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(())
}

Custom

#[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(())
}

Or if you do not want the request object to be a mutable variable...

#[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(())
}

For more information about CoinGecko API can be found here The Route trait can be implented to give a struct the ability to be used by [CoinGeckoAPI]

Dependencies

~6–19MB
~279K SLoC