@@ -25,7 +25,9 @@ use ureq::{Agent, Proxy, Response};
25
25
use bitcoin:: consensus:: { deserialize, serialize} ;
26
26
use bitcoin:: hashes:: hex:: FromHex ;
27
27
use 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
+ } ;
29
31
30
32
use bitcoin_internals:: hex:: display:: DisplayHex ;
31
33
@@ -67,11 +69,14 @@ impl BlockingClient {
67
69
68
70
match resp {
69
71
Ok ( resp) => Ok ( Some ( deserialize ( & into_bytes ( resp) ?) ?) ) ,
70
- Err ( ureq:: Error :: Status ( code, _ ) ) => {
72
+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
71
73
if is_status_not_found ( code) {
72
74
return Ok ( None ) ;
73
75
}
74
- Err ( Error :: HttpResponse ( code) )
76
+ Err ( Error :: HttpResponse {
77
+ status : code,
78
+ message : resp. into_string ( ) ?,
79
+ } )
75
80
}
76
81
Err ( e) => Err ( Error :: Ureq ( e) ) ,
77
82
}
@@ -99,11 +104,14 @@ impl BlockingClient {
99
104
100
105
match resp {
101
106
Ok ( resp) => Ok ( Some ( Txid :: from_str ( & resp. into_string ( ) ?) ?) ) ,
102
- Err ( ureq:: Error :: Status ( code, _ ) ) => {
107
+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
103
108
if is_status_not_found ( code) {
104
109
return Ok ( None ) ;
105
110
}
106
- Err ( Error :: HttpResponse ( code) )
111
+ Err ( Error :: HttpResponse {
112
+ status : code,
113
+ message : resp. into_string ( ) ?,
114
+ } )
107
115
}
108
116
Err ( e) => Err ( Error :: Ureq ( e) ) ,
109
117
}
@@ -118,7 +126,10 @@ impl BlockingClient {
118
126
119
127
match resp {
120
128
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
+ } ) ,
122
133
Err ( e) => Err ( Error :: Ureq ( e) ) ,
123
134
}
124
135
}
@@ -142,7 +153,10 @@ impl BlockingClient {
142
153
143
154
match resp {
144
155
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
+ } ) ,
146
160
Err ( e) => Err ( Error :: Ureq ( e) ) ,
147
161
}
148
162
}
@@ -156,7 +170,10 @@ impl BlockingClient {
156
170
157
171
match resp {
158
172
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
+ } ) ,
160
177
Err ( e) => Err ( Error :: Ureq ( e) ) ,
161
178
}
162
179
}
@@ -170,11 +187,14 @@ impl BlockingClient {
170
187
171
188
match resp {
172
189
Ok ( resp) => Ok ( Some ( deserialize ( & into_bytes ( resp) ?) ?) ) ,
173
- Err ( ureq:: Error :: Status ( code, _ ) ) => {
190
+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
174
191
if is_status_not_found ( code) {
175
192
return Ok ( None ) ;
176
193
}
177
- Err ( Error :: HttpResponse ( code) )
194
+ Err ( Error :: HttpResponse {
195
+ status : code,
196
+ message : resp. into_string ( ) ?,
197
+ } )
178
198
}
179
199
Err ( e) => Err ( Error :: Ureq ( e) ) ,
180
200
}
@@ -189,11 +209,14 @@ impl BlockingClient {
189
209
190
210
match resp {
191
211
Ok ( resp) => Ok ( Some ( resp. into_json ( ) ?) ) ,
192
- Err ( ureq:: Error :: Status ( code, _ ) ) => {
212
+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
193
213
if is_status_not_found ( code) {
194
214
return Ok ( None ) ;
195
215
}
196
- Err ( Error :: HttpResponse ( code) )
216
+ Err ( Error :: HttpResponse {
217
+ status : code,
218
+ message : resp. into_string ( ) ?,
219
+ } )
197
220
}
198
221
Err ( e) => Err ( Error :: Ureq ( e) ) ,
199
222
}
@@ -208,11 +231,14 @@ impl BlockingClient {
208
231
209
232
match resp {
210
233
Ok ( resp) => Ok ( Some ( deserialize ( & Vec :: from_hex ( & resp. into_string ( ) ?) ?) ?) ) ,
211
- Err ( ureq:: Error :: Status ( code, _ ) ) => {
234
+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
212
235
if is_status_not_found ( code) {
213
236
return Ok ( None ) ;
214
237
}
215
- Err ( Error :: HttpResponse ( code) )
238
+ Err ( Error :: HttpResponse {
239
+ status : code,
240
+ message : resp. into_string ( ) ?,
241
+ } )
216
242
}
217
243
Err ( e) => Err ( Error :: Ureq ( e) ) ,
218
244
}
@@ -231,11 +257,14 @@ impl BlockingClient {
231
257
232
258
match resp {
233
259
Ok ( resp) => Ok ( Some ( resp. into_json ( ) ?) ) ,
234
- Err ( ureq:: Error :: Status ( code, _ ) ) => {
260
+ Err ( ureq:: Error :: Status ( code, resp ) ) => {
235
261
if is_status_not_found ( code) {
236
262
return Ok ( None ) ;
237
263
}
238
- Err ( Error :: HttpResponse ( code) )
264
+ Err ( Error :: HttpResponse {
265
+ status : code,
266
+ message : resp. into_string ( ) ?,
267
+ } )
239
268
}
240
269
Err ( e) => Err ( Error :: Ureq ( e) ) ,
241
270
}
@@ -250,7 +279,10 @@ impl BlockingClient {
250
279
251
280
match resp {
252
281
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
+ } ) ,
254
286
Err ( e) => Err ( Error :: Ureq ( e) ) ,
255
287
}
256
288
}
@@ -264,7 +296,10 @@ impl BlockingClient {
264
296
265
297
match resp {
266
298
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
+ } ) ,
268
303
Err ( e) => Err ( Error :: Ureq ( e) ) ,
269
304
}
270
305
}
@@ -298,7 +333,10 @@ impl BlockingClient {
298
333
fn process_block_result ( response : Result < Response , ureq:: Error > ) -> Result < BlockHash , Error > {
299
334
match response {
300
335
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
+ } ) ,
302
340
Err ( e) => Err ( Error :: Ureq ( e) ) ,
303
341
}
304
342
}
@@ -316,7 +354,10 @@ impl BlockingClient {
316
354
let map: HashMap < String , f64 > = resp. into_json ( ) ?;
317
355
Ok ( map)
318
356
}
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
+ } ) ,
320
361
Err ( e) => Err ( Error :: Ureq ( e) ) ,
321
362
} ?;
322
363
@@ -390,7 +431,13 @@ fn into_bytes(resp: Response) -> Result<Vec<u8>, io::Error> {
390
431
impl From < ureq:: Error > for Error {
391
432
fn from ( e : ureq:: Error ) -> Self {
392
433
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
+ } ,
394
441
e => Error :: Ureq ( e) ,
395
442
}
396
443
}
0 commit comments