use super::Kalshi;
use crate::kalshi_error::*;
use serde::{Deserialize, Serialize};
impl Kalshi {
pub async fn get_live_data(
&self,
data_type: &str,
milestone_id: &str,
) -> Result<LiveData, KalshiError> {
let path = format!("/live_data/{}/milestone/{}", data_type, milestone_id);
self.signed_get(&path).await
}
pub async fn get_live_data_batch(
&self,
milestone_ids: Vec<String>,
) -> Result<Vec<LiveData>, KalshiError> {
let path = "/live_data/batch";
let mut params = vec![];
for id in milestone_ids {
params.push(("milestone_ids".to_string(), id));
}
let url = format!("{}{}", self.base_url, path);
let final_url = reqwest::Url::parse_with_params(&url, ¶ms)?;
let res: LiveDataBatchResponse = self.client.get(final_url).send().await?.json().await?;
Ok(res.live_datas)
}
}
#[derive(Debug, Deserialize)]
struct LiveDataBatchResponse {
live_datas: Vec<LiveData>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct LiveData {
#[serde(rename = "type")]
pub data_type: String,
pub milestone_id: Option<String>,
pub details: serde_json::Value,
pub last_updated_ts: Option<String>,
}