use super::types::*;
use crate::client::Client;
use crate::error::Result;
pub struct GlobalApi<'a> {
client: &'a Client,
}
impl<'a> GlobalApi<'a> {
pub fn new(client: &'a Client) -> Self {
Self { client }
}
pub async fn ping(&self) -> Result<PingResponse> {
self.client.get("/ping").await
}
pub async fn data(&self) -> Result<GlobalResponse> {
self.client.get("/global").await
}
pub async fn defi(&self) -> Result<DefiGlobalResponse> {
self.client.get("/global/decentralized_finance_defi").await
}
pub async fn trending(&self) -> Result<TrendingResponse> {
self.client.get("/search/trending").await
}
pub async fn search(&self, query: &str) -> Result<SearchResponse> {
let path = format!("/search?query={}", query);
self.client.get(&path).await
}
pub async fn exchange_rates(&self) -> Result<ExchangeRatesResponse> {
self.client.get("/exchange_rates").await
}
pub async fn asset_platforms(&self) -> Result<Vec<AssetPlatform>> {
self.client.get("/asset_platforms").await
}
pub async fn api_usage(&self) -> Result<ApiKeyUsage> {
self.client.get("/key").await
}
pub async fn market_cap_chart(&self, days: &str) -> Result<MarketCapChart> {
let path = format!("/global/market_cap_chart?days={}", days);
self.client.get(&path).await
}
pub async fn token_list(&self, asset_platform_id: &str) -> Result<TokenList> {
let path = format!("/token_lists/{}/all.json", asset_platform_id);
self.client.get(&path).await
}
}