1414use std:: collections:: HashMap ;
1515use std:: str:: FromStr ;
1616
17- use arti_client:: { TorClient , TorClientConfig } ;
18-
19- use arti_hyper:: ArtiHttpConnector ;
20-
2117use bitcoin:: consensus:: { deserialize, serialize} ;
2218use bitcoin:: hashes:: hex:: FromHex ;
2319use bitcoin:: hashes:: { sha256, Hash } ;
@@ -26,26 +22,38 @@ use bitcoin::{
2622} ;
2723use bitcoin_internals:: hex:: display:: DisplayHex ;
2824
29- use hyper:: { Body , Response , Uri } ;
3025#[ allow( unused_imports) ]
3126use log:: { debug, error, info, trace} ;
3227
33- use reqwest:: { Client , StatusCode } ;
34- use tls_api:: { TlsConnector as TlsConnectorTrait , TlsConnectorBuilder } ;
28+ #[ cfg( feature = "async" ) ]
29+ use reqwest:: Client ;
30+
31+ #[ cfg( feature = "async-arti-hyper" ) ]
32+ use {
33+ arti_client:: { TorClient , TorClientConfig } ,
34+ arti_hyper:: ArtiHttpConnector ,
35+ hyper:: { Body , Response , Uri } ,
36+ tls_api:: { TlsConnector as TlsConnectorTrait , TlsConnectorBuilder } ,
37+ tor_rtcompat:: PreferredRuntime ,
38+ } ;
39+
40+ #[ cfg( feature = "async-arti-hyper" ) ]
3541#[ cfg( not( target_vendor = "apple" ) ) ]
3642use tls_api_native_tls:: TlsConnector ;
43+ #[ cfg( feature = "async-arti-hyper" ) ]
3744#[ cfg( target_vendor = "apple" ) ]
3845use tls_api_openssl:: TlsConnector ;
39- use tor_rtcompat:: PreferredRuntime ;
4046
4147use crate :: { BlockStatus , BlockSummary , Builder , Error , MerkleProof , OutputStatus , Tx , TxStatus } ;
4248
49+ #[ cfg( feature = "async" ) ]
4350#[ derive( Debug , Clone ) ]
4451pub struct AsyncClient {
4552 url : String ,
4653 client : Client ,
4754}
4855
56+ #[ cfg( feature = "async" ) ]
4957impl AsyncClient {
5058 /// build an async client from a builder
5159 pub fn from_builder ( builder : Builder ) -> Result < Self , Error > {
@@ -77,7 +85,7 @@ impl AsyncClient {
7785 . send ( )
7886 . await ?;
7987
80- if let StatusCode :: NOT_FOUND = resp. status ( ) {
88+ if let reqwest :: StatusCode :: NOT_FOUND = resp. status ( ) {
8189 return Ok ( None ) ;
8290 }
8391
@@ -112,7 +120,7 @@ impl AsyncClient {
112120 . send ( )
113121 . await ?;
114122
115- if let StatusCode :: NOT_FOUND = resp. status ( ) {
123+ if let reqwest :: StatusCode :: NOT_FOUND = resp. status ( ) {
116124 return Ok ( None ) ;
117125 }
118126
@@ -198,7 +206,7 @@ impl AsyncClient {
198206 . send ( )
199207 . await ?;
200208
201- if let StatusCode :: NOT_FOUND = resp. status ( ) {
209+ if let reqwest :: StatusCode :: NOT_FOUND = resp. status ( ) {
202210 return Ok ( None ) ;
203211 }
204212
@@ -220,7 +228,7 @@ impl AsyncClient {
220228 . send ( )
221229 . await ?;
222230
223- if let StatusCode :: NOT_FOUND = resp. status ( ) {
231+ if let reqwest :: StatusCode :: NOT_FOUND = resp. status ( ) {
224232 return Ok ( None ) ;
225233 }
226234
@@ -242,7 +250,7 @@ impl AsyncClient {
242250 . send ( )
243251 . await ?;
244252
245- if let StatusCode :: NOT_FOUND = resp. status ( ) {
253+ if let reqwest :: StatusCode :: NOT_FOUND = resp. status ( ) {
246254 return Ok ( None ) ;
247255 }
248256
@@ -269,7 +277,7 @@ impl AsyncClient {
269277 . send ( )
270278 . await ?;
271279
272- if let StatusCode :: NOT_FOUND = resp. status ( ) {
280+ if let reqwest :: StatusCode :: NOT_FOUND = resp. status ( ) {
273281 return Ok ( None ) ;
274282 }
275283
@@ -346,7 +354,7 @@ impl AsyncClient {
346354 . send ( )
347355 . await ?;
348356
349- if let StatusCode :: NOT_FOUND = resp. status ( ) {
357+ if let reqwest :: StatusCode :: NOT_FOUND = resp. status ( ) {
350358 return Err ( Error :: HeaderHeightNotFound ( block_height) ) ;
351359 }
352360
@@ -441,12 +449,14 @@ impl AsyncClient {
441449 }
442450}
443451
452+ #[ cfg( feature = "async-arti-hyper" ) ]
444453#[ derive( Debug , Clone ) ]
445454pub struct AsyncAnonymizedClient {
446455 url : String ,
447456 client : hyper:: Client < ArtiHttpConnector < PreferredRuntime , TlsConnector > > ,
448457}
449458
459+ #[ cfg( feature = "async-arti-hyper" ) ]
450460impl AsyncAnonymizedClient {
451461 /// build an async [`TorClient`] with default Tor configuration
452462 async fn create_tor_client ( ) -> Result < TorClient < PreferredRuntime > , arti_client:: Error > {
@@ -485,7 +495,7 @@ impl AsyncAnonymizedClient {
485495
486496 let resp = self . client . get ( uri) . await ?;
487497
488- if let StatusCode :: NOT_FOUND = resp. status ( ) {
498+ if let hyper :: StatusCode :: NOT_FOUND = resp. status ( ) {
489499 return Ok ( None ) ;
490500 }
491501
@@ -521,7 +531,7 @@ impl AsyncAnonymizedClient {
521531
522532 let resp = self . client . get ( uri) . await ?;
523533
524- if let StatusCode :: NOT_FOUND = resp. status ( ) {
534+ if let hyper :: StatusCode :: NOT_FOUND = resp. status ( ) {
525535 return Ok ( None ) ;
526536 }
527537
@@ -604,7 +614,7 @@ impl AsyncAnonymizedClient {
604614 let uri = Uri :: from_str ( & path) . map_err ( |_| Error :: InvalidUri ) ?;
605615 let resp = self . client . get ( uri) . await ?;
606616
607- if let StatusCode :: NOT_FOUND = resp. status ( ) {
617+ if let hyper :: StatusCode :: NOT_FOUND = resp. status ( ) {
608618 return Ok ( None ) ;
609619 }
610620
@@ -627,7 +637,7 @@ impl AsyncAnonymizedClient {
627637
628638 let resp = self . client . get ( uri) . await ?;
629639
630- if let StatusCode :: NOT_FOUND = resp. status ( ) {
640+ if let hyper :: StatusCode :: NOT_FOUND = resp. status ( ) {
631641 return Ok ( None ) ;
632642 }
633643
@@ -652,7 +662,7 @@ impl AsyncAnonymizedClient {
652662
653663 let resp = self . client . get ( uri) . await ?;
654664
655- if let StatusCode :: NOT_FOUND = resp. status ( ) {
665+ if let hyper :: StatusCode :: NOT_FOUND = resp. status ( ) {
656666 return Ok ( None ) ;
657667 }
658668
@@ -678,7 +688,7 @@ impl AsyncAnonymizedClient {
678688 let uri = Uri :: from_str ( path) . map_err ( |_| Error :: InvalidUri ) ?;
679689 let resp = self . client . get ( uri) . await ?;
680690
681- if let StatusCode :: NOT_FOUND = resp. status ( ) {
691+ if let hyper :: StatusCode :: NOT_FOUND = resp. status ( ) {
682692 return Ok ( None ) ;
683693 }
684694
@@ -697,6 +707,7 @@ impl AsyncAnonymizedClient {
697707 }
698708 }
699709
710+ // TODO: (@leonardo)
700711 // /// Broadcast a [`Transaction`] to Esplora
701712 // pub async fn broadcast(&self, transaction: &Transaction) -> Result<(), Error> {
702713 // let resp = self
@@ -761,7 +772,7 @@ impl AsyncAnonymizedClient {
761772 let uri = Uri :: from_str ( path) . map_err ( |_| Error :: InvalidUri ) ?;
762773 let resp = self . client . get ( uri) . await ?;
763774
764- if let StatusCode :: NOT_FOUND = resp. status ( ) {
775+ if let hyper :: StatusCode :: NOT_FOUND = resp. status ( ) {
765776 return Err ( Error :: HeaderHeightNotFound ( block_height) ) ;
766777 }
767778
0 commit comments