From d42e573d04285716ba150f7950d5fde870775d74 Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Sun, 20 Jul 2025 23:01:03 +0100 Subject: [PATCH] fix: add Photon API key support LightCLient & RPC pool --- forester-utils/src/rpc_pool.rs | 5 +++++ forester/src/lib.rs | 1 + sdk-libs/client/src/indexer/photon_indexer.rs | 5 ++++- sdk-libs/client/src/rpc/client.rs | 4 +++- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/forester-utils/src/rpc_pool.rs b/forester-utils/src/rpc_pool.rs index 42438aea1f..1c6d5d8c20 100644 --- a/forester-utils/src/rpc_pool.rs +++ b/forester-utils/src/rpc_pool.rs @@ -144,6 +144,11 @@ impl SolanaRpcPoolBuilder { self } + pub fn api_key(mut self, api_key: Option) -> Self { + self.api_key = api_key; + self + } + pub fn commitment(mut self, commitment: CommitmentConfig) -> Self { self.commitment = Some(commitment); self diff --git a/forester/src/lib.rs b/forester/src/lib.rs index 1fe11c1df2..55cb5abef8 100644 --- a/forester/src/lib.rs +++ b/forester/src/lib.rs @@ -117,6 +117,7 @@ pub async fn run_pipeline( let mut builder = SolanaRpcPoolBuilder::::default() .url(config.external_services.rpc_url.to_string()) .photon_url(config.external_services.indexer_url.clone()) + .api_key(config.external_services.photon_api_key.clone()) .commitment(CommitmentConfig::confirmed()) .max_size(config.rpc_pool_config.max_size) .connection_timeout_secs(config.rpc_pool_config.connection_timeout_secs) diff --git a/sdk-libs/client/src/indexer/photon_indexer.rs b/sdk-libs/client/src/indexer/photon_indexer.rs index c3129aaba5..3409a5df7d 100644 --- a/sdk-libs/client/src/indexer/photon_indexer.rs +++ b/sdk-libs/client/src/indexer/photon_indexer.rs @@ -132,7 +132,10 @@ impl PhotonIndexer { result: Option, ) -> Result { if let Some(error) = error { - let error_message = error.message.unwrap_or_default(); + let error_message = error + .clone() + .message + .unwrap_or_else(|| format!("Unknown API error: {:?}", error).to_string()); return Err(IndexerError::ApiError(format!( "API error in {} (code: {:?}): {}", context, error.code, error_message diff --git a/sdk-libs/client/src/rpc/client.rs b/sdk-libs/client/src/rpc/client.rs index 494ee9a218..99557f6739 100644 --- a/sdk-libs/client/src/rpc/client.rs +++ b/sdk-libs/client/src/rpc/client.rs @@ -110,7 +110,9 @@ impl LightClient { let client = RpcClient::new_with_commitment(config.url.to_string(), commitment_config); let retry_config = retry_config.unwrap_or_default(); - let indexer = config.photon_url.map(|path| PhotonIndexer::new(path, None)); + let indexer = config + .photon_url + .map(|path| PhotonIndexer::new(path, config.api_key)); let mut new = Self { client,