From a21eff60f371f3a39ea725b0c3c6c122644ad8b7 Mon Sep 17 00:00:00 2001 From: floor-licker Date: Tue, 4 Nov 2025 18:55:54 -0500 Subject: [PATCH] feat: method to get API keys for authenticated user --- src/client.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/client.rs b/src/client.rs index f6bec95..6d7d9a3 100644 --- a/src/client.rs +++ b/src/client.rs @@ -285,6 +285,52 @@ impl ClobClient { } } + /// Get all API keys for the authenticated user + pub async fn get_api_keys(&self) -> Result> { + let signer = self.signer.as_ref() + .ok_or_else(|| PolyfillError::config("Signer not configured"))?; + let api_creds = self.api_creds.as_ref() + .ok_or_else(|| PolyfillError::config("API credentials not configured"))?; + + let method = Method::GET; + let endpoint = "/auth/api-keys"; + let headers = create_l2_headers::(signer, api_creds, method.as_str(), endpoint, None)?; + + let response = self.http_client + .request(method, format!("{}{}", self.base_url, endpoint)) + .headers(headers.into_iter().map(|(k, v)| (HeaderName::from_static(k), v.parse().unwrap())).collect()) + .send() + .await + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + + let api_keys_response: crate::types::ApiKeysResponse = response.json().await + .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None))?; + + Ok(api_keys_response.api_keys) + } + + /// Delete the current API key + pub async fn delete_api_key(&self) -> Result { + let signer = self.signer.as_ref() + .ok_or_else(|| PolyfillError::config("Signer not configured"))?; + let api_creds = self.api_creds.as_ref() + .ok_or_else(|| PolyfillError::config("API credentials not configured"))?; + + let method = Method::DELETE; + let endpoint = "/auth/api-key"; + let headers = create_l2_headers::(signer, api_creds, method.as_str(), endpoint, None)?; + + let response = self.http_client + .request(method, format!("{}{}", self.base_url, endpoint)) + .headers(headers.into_iter().map(|(k, v)| (HeaderName::from_static(k), v.parse().unwrap())).collect()) + .send() + .await + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + + response.text().await + .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) + } + /// Helper to create request with headers fn create_request_with_headers( &self,