diff --git a/src/blockchain/esplora/reqwest.rs b/src/blockchain/esplora/reqwest.rs index 302e811fd..b549f30a3 100644 --- a/src/blockchain/esplora/reqwest.rs +++ b/src/blockchain/esplora/reqwest.rs @@ -12,6 +12,7 @@ //! Esplora by way of `reqwest` HTTP client. use std::collections::{HashMap, HashSet}; +use std::ops::Deref; use bitcoin::consensus::{deserialize, serialize}; use bitcoin::hashes::hex::{FromHex, ToHex}; @@ -31,8 +32,9 @@ use crate::database::BatchDatabase; use crate::error::Error; use crate::FeeRate; +/// Structure encapsulates Esplora client #[derive(Debug)] -struct UrlClient { +pub struct UrlClient { url: String, // We use the async client instead of the blocking one because it automatically uses `fetch` // when the target platform is wasm32. @@ -101,6 +103,14 @@ impl Blockchain for EsploraBlockchain { } } +impl Deref for EsploraBlockchain { + type Target = UrlClient; + + fn deref(&self) -> &Self::Target { + &self.url_client + } +} + impl StatelessBlockchain for EsploraBlockchain {} #[maybe_async] diff --git a/src/blockchain/esplora/ureq.rs b/src/blockchain/esplora/ureq.rs index 9899b9046..7a9388a08 100644 --- a/src/blockchain/esplora/ureq.rs +++ b/src/blockchain/esplora/ureq.rs @@ -14,6 +14,7 @@ use std::collections::{HashMap, HashSet}; use std::io; use std::io::Read; +use std::ops::Deref; use std::time::Duration; #[allow(unused_imports)] @@ -33,8 +34,9 @@ use crate::database::BatchDatabase; use crate::error::Error; use crate::FeeRate; +/// Structure encapsulates ureq Esplora client #[derive(Debug, Clone)] -struct UrlClient { +pub struct UrlClient { url: String, agent: Agent, } @@ -98,6 +100,14 @@ impl Blockchain for EsploraBlockchain { } } +impl Deref for EsploraBlockchain { + type Target = UrlClient; + + fn deref(&self) -> &Self::Target { + &self.url_client + } +} + impl StatelessBlockchain for EsploraBlockchain {} impl GetHeight for EsploraBlockchain {