use super::types::*;
use crate::client::Client;
use crate::error::Result;
pub struct DerivativesApi<'a> {
client: &'a Client,
}
impl<'a> DerivativesApi<'a> {
pub fn new(client: &'a Client) -> Self {
Self { client }
}
pub async fn list(&self) -> Result<Vec<DerivativeTicker>> {
self.client.get("/derivatives").await
}
pub async fn list_with_options(
&self,
options: &DerivativesOptions,
) -> Result<Vec<DerivativeTicker>> {
let path = format!("/derivatives{}", options.to_query_string());
self.client.get(&path).await
}
pub async fn exchanges(&self) -> Result<Vec<DerivativeExchange>> {
self.client.get("/derivatives/exchanges").await
}
pub async fn exchanges_with_options(
&self,
options: &DerivativeExchangesOptions,
) -> Result<Vec<DerivativeExchange>> {
let path = format!("/derivatives/exchanges{}", options.to_query_string());
self.client.get(&path).await
}
pub async fn exchange(&self, id: &str) -> Result<DerivativeExchangeDetail> {
let path = format!("/derivatives/exchanges/{}", id);
self.client.get(&path).await
}
pub async fn exchange_with_tickers(
&self,
id: &str,
include_tickers: &str,
) -> Result<DerivativeExchangeDetail> {
let path = format!(
"/derivatives/exchanges/{}?include_tickers={}",
id, include_tickers
);
self.client.get(&path).await
}
pub async fn exchanges_list(&self) -> Result<Vec<DerivativeExchangeListItem>> {
self.client.get("/derivatives/exchanges/list").await
}
}