use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use tracing::{instrument, trace};
use crate::error::Result;
use super::Client;
use super::pricing::Side;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SpreadRequest {
pub token_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub side: Option<Side>,
}
impl Client {
#[instrument(skip(self, request), level = "trace")]
pub async fn get_spreads(&self, request: &[SpreadRequest]) -> Result<HashMap<String, String>> {
let url = self.build_url("spreads");
trace!(url = %url, method = "POST", count = request.len(), "sending HTTP request");
let response = self.http_client.post(url).json(request).send().await?;
let response = self.check_response(response).await?;
let spreads: HashMap<String, String> = response.json().await?;
trace!(count = spreads.len(), "received spreads");
Ok(spreads)
}
}