1 unstable release
0.1.0 | Nov 23, 2023 |
---|
#7 in #coin-gecko
Used in price-adapter
20KB
452 lines
price-explorer
price-explorer is a price query adapter for crypto exchanges and price aggregators.
It provides a unified interface for querying price data from different exchanges and price aggregators. Currently, it supports the following exchanges and price aggregators:
- Binance
- CoinGecko
Usage
Coingecko
To use coingecko api, you need to create a CoingeckoPro
instance and set the api key.
use price_adapter_raw::CoinGecko;
#[tokio::main]
async fn main() {
let coingecko = CoinGecko::new_with_api_key("$API_KEY".into());
let queries = vec!["ethereum"];
let prices = coingecko.get_prices(&queries).await;
println!("prices: {:?}", prices);
}
Binance Websocket
To use binance websocket api, you need to create a BinanceWebsocket
instance and set the
query symbols.
use price_adapter_raw::BinanceWebsocket;
use futures_util::StreamExt;
#[tokio::main]
async fn main() {
let mut binance_ws = BinanceWebsocket::new("wss://stream.binance.com:9443", &["ethbtc", "btcusdt"]);
binance_ws.connect().await.unwrap();
while let Some(data) = binance_ws.next().await {
match data {
Ok(price) => {
println!("price: {}", price);
# break;
}
Err(e) => {
eprintln!("Error: {}", e);
break;
}
}
}
}
Or use BinanceWebsocketService
to query price data.
use price_adapter_raw::{BinanceWebsocket, BinanceWebsocketService};
use std::time::Duration;
#[tokio::main]
async fn main() {
let mut binance_ws = BinanceWebsocket::new("wss://stream.binance.com:9443", &["ethbtc", "btcusdt"]);
let mut service = BinanceWebsocketService::new(binance_ws);
service.start().await.unwrap();
tokio::time::sleep(Duration::from_secs(1)).await;
let price = service.get_prices(&["btcusdt"]).await;
println!("price: {:?}", price);
}
Dependencies
~9–27MB
~388K SLoC