@@ -25,7 +25,9 @@ use ureq::{Agent, Proxy, Response};
2525use bitcoin:: consensus:: { deserialize, serialize} ;
2626use bitcoin:: hashes:: hex:: FromHex ;
2727use bitcoin:: hashes:: { sha256, Hash } ;
28- use bitcoin:: { Block , BlockHash , block:: Header as BlockHeader , MerkleBlock , Script , Transaction , Txid } ;
28+ use bitcoin:: {
29+ block:: Header as BlockHeader , Block , BlockHash , MerkleBlock , Script , Transaction , Txid ,
30+ } ;
2931
3032use bitcoin_internals:: hex:: display:: DisplayHex ;
3133
@@ -67,11 +69,14 @@ impl BlockingClient {
6769
6870 match resp {
6971 Ok ( resp) => Ok ( Some ( deserialize ( & into_bytes ( resp) ?) ?) ) ,
70- Err ( ureq:: Error :: Status ( code, _ ) ) => {
72+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
7173 if is_status_not_found ( code) {
7274 return Ok ( None ) ;
7375 }
74- Err ( Error :: HttpResponse ( code) )
76+ Err ( Error :: HttpResponse {
77+ status : code,
78+ message : resp. into_string ( ) ?,
79+ } )
7580 }
7681 Err ( e) => Err ( Error :: Ureq ( e) ) ,
7782 }
@@ -99,11 +104,14 @@ impl BlockingClient {
99104
100105 match resp {
101106 Ok ( resp) => Ok ( Some ( Txid :: from_str ( & resp. into_string ( ) ?) ?) ) ,
102- Err ( ureq:: Error :: Status ( code, _ ) ) => {
107+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
103108 if is_status_not_found ( code) {
104109 return Ok ( None ) ;
105110 }
106- Err ( Error :: HttpResponse ( code) )
111+ Err ( Error :: HttpResponse {
112+ status : code,
113+ message : resp. into_string ( ) ?,
114+ } )
107115 }
108116 Err ( e) => Err ( Error :: Ureq ( e) ) ,
109117 }
@@ -118,7 +126,10 @@ impl BlockingClient {
118126
119127 match resp {
120128 Ok ( resp) => Ok ( resp. into_json ( ) ?) ,
121- Err ( ureq:: Error :: Status ( code, _) ) => Err ( Error :: HttpResponse ( code) ) ,
129+ Err ( ureq:: Error :: Status ( code, resp) ) => Err ( Error :: HttpResponse {
130+ status : code,
131+ message : resp. into_string ( ) ?,
132+ } ) ,
122133 Err ( e) => Err ( Error :: Ureq ( e) ) ,
123134 }
124135 }
@@ -142,7 +153,10 @@ impl BlockingClient {
142153
143154 match resp {
144155 Ok ( resp) => Ok ( deserialize ( & Vec :: from_hex ( & resp. into_string ( ) ?) ?) ?) ,
145- Err ( ureq:: Error :: Status ( code, _) ) => Err ( Error :: HttpResponse ( code) ) ,
156+ Err ( ureq:: Error :: Status ( code, resp) ) => Err ( Error :: HttpResponse {
157+ status : code,
158+ message : resp. into_string ( ) ?,
159+ } ) ,
146160 Err ( e) => Err ( Error :: Ureq ( e) ) ,
147161 }
148162 }
@@ -156,7 +170,10 @@ impl BlockingClient {
156170
157171 match resp {
158172 Ok ( resp) => Ok ( resp. into_json ( ) ?) ,
159- Err ( ureq:: Error :: Status ( code, _) ) => Err ( Error :: HttpResponse ( code) ) ,
173+ Err ( ureq:: Error :: Status ( code, resp) ) => Err ( Error :: HttpResponse {
174+ status : code,
175+ message : resp. into_string ( ) ?,
176+ } ) ,
160177 Err ( e) => Err ( Error :: Ureq ( e) ) ,
161178 }
162179 }
@@ -170,11 +187,14 @@ impl BlockingClient {
170187
171188 match resp {
172189 Ok ( resp) => Ok ( Some ( deserialize ( & into_bytes ( resp) ?) ?) ) ,
173- Err ( ureq:: Error :: Status ( code, _ ) ) => {
190+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
174191 if is_status_not_found ( code) {
175192 return Ok ( None ) ;
176193 }
177- Err ( Error :: HttpResponse ( code) )
194+ Err ( Error :: HttpResponse {
195+ status : code,
196+ message : resp. into_string ( ) ?,
197+ } )
178198 }
179199 Err ( e) => Err ( Error :: Ureq ( e) ) ,
180200 }
@@ -189,11 +209,14 @@ impl BlockingClient {
189209
190210 match resp {
191211 Ok ( resp) => Ok ( Some ( resp. into_json ( ) ?) ) ,
192- Err ( ureq:: Error :: Status ( code, _ ) ) => {
212+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
193213 if is_status_not_found ( code) {
194214 return Ok ( None ) ;
195215 }
196- Err ( Error :: HttpResponse ( code) )
216+ Err ( Error :: HttpResponse {
217+ status : code,
218+ message : resp. into_string ( ) ?,
219+ } )
197220 }
198221 Err ( e) => Err ( Error :: Ureq ( e) ) ,
199222 }
@@ -208,11 +231,14 @@ impl BlockingClient {
208231
209232 match resp {
210233 Ok ( resp) => Ok ( Some ( deserialize ( & Vec :: from_hex ( & resp. into_string ( ) ?) ?) ?) ) ,
211- Err ( ureq:: Error :: Status ( code, _ ) ) => {
234+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
212235 if is_status_not_found ( code) {
213236 return Ok ( None ) ;
214237 }
215- Err ( Error :: HttpResponse ( code) )
238+ Err ( Error :: HttpResponse {
239+ status : code,
240+ message : resp. into_string ( ) ?,
241+ } )
216242 }
217243 Err ( e) => Err ( Error :: Ureq ( e) ) ,
218244 }
@@ -231,11 +257,14 @@ impl BlockingClient {
231257
232258 match resp {
233259 Ok ( resp) => Ok ( Some ( resp. into_json ( ) ?) ) ,
234- Err ( ureq:: Error :: Status ( code, _ ) ) => {
260+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
235261 if is_status_not_found ( code) {
236262 return Ok ( None ) ;
237263 }
238- Err ( Error :: HttpResponse ( code) )
264+ Err ( Error :: HttpResponse {
265+ status : code,
266+ message : resp. into_string ( ) ?,
267+ } )
239268 }
240269 Err ( e) => Err ( Error :: Ureq ( e) ) ,
241270 }
@@ -250,7 +279,10 @@ impl BlockingClient {
250279
251280 match resp {
252281 Ok ( _) => Ok ( ( ) ) , // We do not return the txid?
253- Err ( ureq:: Error :: Status ( code, _) ) => Err ( Error :: HttpResponse ( code) ) ,
282+ Err ( ureq:: Error :: Status ( code, resp) ) => Err ( Error :: HttpResponse {
283+ status : code,
284+ message : resp. into_string ( ) ?,
285+ } ) ,
254286 Err ( e) => Err ( Error :: Ureq ( e) ) ,
255287 }
256288 }
@@ -264,7 +296,10 @@ impl BlockingClient {
264296
265297 match resp {
266298 Ok ( resp) => Ok ( resp. into_string ( ) ?. parse ( ) ?) ,
267- Err ( ureq:: Error :: Status ( code, _) ) => Err ( Error :: HttpResponse ( code) ) ,
299+ Err ( ureq:: Error :: Status ( code, resp) ) => Err ( Error :: HttpResponse {
300+ status : code,
301+ message : resp. into_string ( ) ?,
302+ } ) ,
268303 Err ( e) => Err ( Error :: Ureq ( e) ) ,
269304 }
270305 }
@@ -298,7 +333,10 @@ impl BlockingClient {
298333 fn process_block_result ( response : Result < Response , ureq:: Error > ) -> Result < BlockHash , Error > {
299334 match response {
300335 Ok ( resp) => Ok ( BlockHash :: from_str ( & resp. into_string ( ) ?) ?) ,
301- Err ( ureq:: Error :: Status ( code, _) ) => Err ( Error :: HttpResponse ( code) ) ,
336+ Err ( ureq:: Error :: Status ( code, resp) ) => Err ( Error :: HttpResponse {
337+ status : code,
338+ message : resp. into_string ( ) ?,
339+ } ) ,
302340 Err ( e) => Err ( Error :: Ureq ( e) ) ,
303341 }
304342 }
@@ -316,7 +354,10 @@ impl BlockingClient {
316354 let map: HashMap < String , f64 > = resp. into_json ( ) ?;
317355 Ok ( map)
318356 }
319- Err ( ureq:: Error :: Status ( code, _) ) => Err ( Error :: HttpResponse ( code) ) ,
357+ Err ( ureq:: Error :: Status ( code, resp) ) => Err ( Error :: HttpResponse {
358+ status : code,
359+ message : resp. into_string ( ) ?,
360+ } ) ,
320361 Err ( e) => Err ( Error :: Ureq ( e) ) ,
321362 } ?;
322363
@@ -390,7 +431,13 @@ fn into_bytes(resp: Response) -> Result<Vec<u8>, io::Error> {
390431impl From < ureq:: Error > for Error {
391432 fn from ( e : ureq:: Error ) -> Self {
392433 match e {
393- ureq:: Error :: Status ( code, _) => Error :: HttpResponse ( code) ,
434+ ureq:: Error :: Status ( code, resp) => match resp. into_string ( ) {
435+ Ok ( msg) => Error :: HttpResponse {
436+ status : code,
437+ message : msg,
438+ } ,
439+ Err ( e) => Error :: Io ( e) ,
440+ } ,
394441 e => Error :: Ureq ( e) ,
395442 }
396443 }
0 commit comments