@@ -87,6 +87,7 @@ const LSPS_HARDENED_CHILD_INDEX: u32 = 577;
8787enum ChainDataSourceConfig {
8888 Esplora {
8989 server_url : String ,
90+ headers : HashMap < String , String > ,
9091 sync_config : Option < EsploraSyncConfig > ,
9192 } ,
9293 Electrum {
@@ -294,9 +295,28 @@ impl NodeBuilder {
294295 /// information.
295296 pub fn set_chain_source_esplora (
296297 & mut self , server_url : String , sync_config : Option < EsploraSyncConfig > ,
298+ ) -> & mut Self {
299+ self . chain_data_source_config = Some ( ChainDataSourceConfig :: Esplora {
300+ server_url,
301+ headers : Default :: default ( ) ,
302+ sync_config,
303+ } ) ;
304+ self
305+ }
306+
307+ /// Configures the [`Node`] instance to source its chain data from the given Esplora server.
308+ ///
309+ /// The given `headers` will be included in all requests to the Esplora server, typically used for
310+ /// authentication purposes.
311+ ///
312+ /// If no `sync_config` is given, default values are used. See [`EsploraSyncConfig`] for more
313+ /// information.
314+ pub fn set_chain_source_esplora_with_headers (
315+ & mut self , server_url : String , headers : HashMap < String , String > ,
316+ sync_config : Option < EsploraSyncConfig > ,
297317 ) -> & mut Self {
298318 self . chain_data_source_config =
299- Some ( ChainDataSourceConfig :: Esplora { server_url, sync_config } ) ;
319+ Some ( ChainDataSourceConfig :: Esplora { server_url, headers , sync_config } ) ;
300320 self
301321 }
302322
@@ -754,6 +774,20 @@ impl ArcedNodeBuilder {
754774 self . inner . write ( ) . unwrap ( ) . set_chain_source_esplora ( server_url, sync_config) ;
755775 }
756776
777+ /// Configures the [`Node`] instance to source its chain data from the given Esplora server.
778+ ///
779+ /// The given `headers` will be included in all requests to the Esplora server, typically used for
780+ /// authentication purposes.
781+ ///
782+ /// If no `sync_config` is given, default values are used. See [`EsploraSyncConfig`] for more
783+ /// information.
784+ pub fn set_chain_source_esplora_with_headers (
785+ & self , server_url : String , headers : HashMap < String , String > ,
786+ sync_config : Option < EsploraSyncConfig > ,
787+ ) {
788+ self . inner . write ( ) . unwrap ( ) . set_chain_source_esplora_with_headers ( server_url, headers, sync_config) ;
789+ }
790+
757791 /// Configures the [`Node`] instance to source its chain data from the given Electrum server.
758792 ///
759793 /// If no `sync_config` is given, default values are used. See [`ElectrumSyncConfig`] for more
@@ -1117,10 +1151,11 @@ fn build_with_store_internal(
11171151 ) ) ;
11181152
11191153 let chain_source = match chain_data_source_config {
1120- Some ( ChainDataSourceConfig :: Esplora { server_url, sync_config } ) => {
1154+ Some ( ChainDataSourceConfig :: Esplora { server_url, headers , sync_config } ) => {
11211155 let sync_config = sync_config. unwrap_or ( EsploraSyncConfig :: default ( ) ) ;
11221156 Arc :: new ( ChainSource :: new_esplora (
11231157 server_url. clone ( ) ,
1158+ headers. clone ( ) ,
11241159 sync_config,
11251160 Arc :: clone ( & wallet) ,
11261161 Arc :: clone ( & fee_estimator) ,
@@ -1187,6 +1222,7 @@ fn build_with_store_internal(
11871222 let sync_config = EsploraSyncConfig :: default ( ) ;
11881223 Arc :: new ( ChainSource :: new_esplora (
11891224 server_url. clone ( ) ,
1225+ HashMap :: new ( ) ,
11901226 sync_config,
11911227 Arc :: clone ( & wallet) ,
11921228 Arc :: clone ( & fee_estimator) ,
0 commit comments