use super::types::*;
use crate::client::Client;
use crate::error::Result;
pub struct ExchangesApi<'a> {
client: &'a Client,
}
impl<'a> ExchangesApi<'a> {
pub fn new(client: &'a Client) -> Self {
Self { client }
}
pub async fn list(&self) -> Result<Vec<Exchange>> {
self.client.get("/exchanges").await
}
pub async fn list_paginated(&self, per_page: u32, page: u32) -> Result<Vec<Exchange>> {
let path = format!("/exchanges?per_page={}&page={}", per_page, page);
self.client.get(&path).await
}
pub async fn id_list(&self) -> Result<Vec<ExchangeListItem>> {
self.client.get("/exchanges/list").await
}
pub async fn get(&self, id: &str) -> Result<Exchange> {
let path = format!("/exchanges/{}", id);
self.client.get(&path).await
}
pub async fn tickers(&self, id: &str) -> Result<ExchangeTickers> {
let path = format!("/exchanges/{}/tickers", id);
self.client.get(&path).await
}
pub async fn volume_chart(&self, id: &str, days: u32) -> Result<VolumeChart> {
let path = format!("/exchanges/{}/volume_chart?days={}", id, days);
self.client.get(&path).await
}
pub async fn volume_chart_range(&self, id: &str, from: u64, to: u64) -> Result<VolumeChart> {
let path = format!(
"/exchanges/{}/volume_chart/range?from={}&to={}",
id, from, to
);
self.client.get(&path).await
}
}