Skip to content
ffindelsbergerPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

64 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

coingecko

Pull Requests and Suggestions for Improvements are highly welcomed and appreciated

CoinGecko API Client for Rust

Simple API Client for CoinGecko written in Rust

Available endpoint

Refer to CoinGecko official API

Endpoint Status Testing Function
/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 WIP WIP EventsCountries
/events/types WIP WIP EventsType
/exchange_rates ✓ ✓ ExchangeRate
/global ✓ ✓ Global

More api Endpoints than listed here will be supported in the Future. As soon as I start working on additional Endpoints the Table will be updated.

rustls and OpenSSL/native-tls

By Default this Crate uses the rustls backend of reqwest, if you need native-tls/openSSL you need to activate the native-tls feature

rustgecko = { version = "*" , features = ["native-tls"] }

Shortcut Methods

Some Methods with a lot of boolean Flags have a shorter Version i.E "simple_price_short" for if you just want to retrieve Some Data and leave the Rest of the Params as their Default.

Usage

use rustgecko::client::GeckoClient;

fn main() {
    let client = GeckoClient::default();
}

In a Production Setting or when you have a Coingecko Subscription you might want to supply your own Client with Credentials or with any other additional configuration.

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");
}

Error Handling

Every 4XX Response is turned into an error of type reqwest::Error and propagated up the call chain.
For handling reqwest errors reference the Docs -> 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"),
        }
    }
}

License

MIT

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages