From 11765f9fc758f01e8cf30771f5a43a93d3a3e024 Mon Sep 17 00:00:00 2001 From: floor-licker Date: Tue, 4 Nov 2025 23:03:55 -0500 Subject: [PATCH] Add missing get_spreads method to achieve complete API parity Add get_spreads method for batch spread queries to match reference implementation exactly, now have all 42 methods with identical signatures and functionality for true drop-in replacement compatibility. --- src/client.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/client.rs b/src/client.rs index 4c35183..d9ec0f3 100644 --- a/src/client.rs +++ b/src/client.rs @@ -190,6 +190,31 @@ impl ClobClient { Ok(spread) } + /// Get spreads for multiple tokens (batch) + pub async fn get_spreads(&self, token_ids: &[String]) -> Result> { + let request_data: Vec> = token_ids + .iter() + .map(|id| { + let mut map = std::collections::HashMap::new(); + map.insert("token_id", id.clone()); + map + }) + .collect(); + + let response = self.http_client + .post(&format!("{}/spreads", self.base_url)) + .json(&request_data) + .send() + .await?; + + if !response.status().is_success() { + return Err(PolyfillError::api(response.status().as_u16(), "Failed to get batch spreads")); + } + + response.json::>().await + .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) + } + /// Get price for a token and side pub async fn get_price(&self, token_id: &str, side: Side) -> Result { let response = self.http_client