use polyte_core::RequestError;
use reqwest::Client;
use serde::{Deserialize, Serialize};
use url::Url;
use crate::error::{DataApiError, Result};
#[derive(Clone)]
pub struct LiveVolumeApi {
pub(crate) client: Client,
pub(crate) base_url: Url,
}
impl LiveVolumeApi {
pub async fn get(&self, event_id: u64) -> Result<Vec<LiveVolume>> {
let url = self.base_url.join("/live-volume")?;
let response = self
.client
.get(url)
.query(&[("id", event_id)])
.send()
.await?;
let status = response.status();
if !status.is_success() {
return Err(DataApiError::from_response(response).await);
}
let volume: Vec<LiveVolume> = response.json().await?;
Ok(volume)
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LiveVolume {
pub total: f64,
pub markets: Vec<MarketVolume>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MarketVolume {
pub market: String,
pub value: f64,
}