use polyoxide_core::HttpClient;
use crate::spot::{
error::SpotError,
request::Routed,
types::{ExchangeInfo, Symbol},
weight::{Cost, Route},
};
#[derive(Debug, Clone)]
pub struct ExchangeApi {
pub(crate) http: HttpClient,
}
impl ExchangeApi {
pub fn exchange_info(&self) -> GetExchangeInfo {
GetExchangeInfo {
request: Routed::new(&self.http, Route::ExchangeInfo),
}
}
}
#[must_use = "a request does nothing until it is sent"]
pub struct GetExchangeInfo {
request: Routed<ExchangeInfo>,
}
impl GetExchangeInfo {
polyoxide_core::query_setters! {
symbol: &Symbol => "symbol",
}
pub fn cost(&self) -> Cost {
self.request.cost()
}
pub async fn send(self) -> Result<ExchangeInfo, SpotError> {
self.request.send().await
}
}