1
+ #[ cfg( any( feature = "enable_reqwest" , feature = "enable_reqwest_rustls" ) ) ]
2
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
3
+ mod reqwest;
4
+
5
+ #[ cfg( any( feature = "enable_reqwest" , feature = "enable_reqwest_rustls" ) ) ]
6
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
7
+ pub use self :: reqwest:: * ;
1
8
#[ allow( unused_imports) ]
2
9
use crate :: error:: { Error , ErrorKind , ResultExt } ;
3
10
#[ allow( unused_imports) ]
@@ -10,13 +17,6 @@ use bytes::Bytes;
10
17
use futures:: TryStreamExt ;
11
18
use serde:: Serialize ;
12
19
13
- /// Construct a new `HttpClient` with the `reqwest` backend.
14
- #[ cfg( any( feature = "enable_reqwest" , feature = "enable_reqwest_rustls" ) ) ]
15
- #[ cfg( not( target_arch = "wasm32" ) ) ]
16
- pub fn new_http_client ( ) -> std:: sync:: Arc < dyn HttpClient > {
17
- std:: sync:: Arc :: new ( reqwest:: Client :: new ( ) )
18
- }
19
-
20
20
/// An HTTP client which can send requests.
21
21
#[ cfg_attr( target_arch = "wasm32" , async_trait( ?Send ) ) ]
22
22
#[ cfg_attr( not( target_arch = "wasm32" ) , async_trait) ]
@@ -45,53 +45,6 @@ pub trait HttpClient: Send + Sync + std::fmt::Debug {
45
45
}
46
46
}
47
47
48
- #[ cfg( any( feature = "enable_reqwest" , feature = "enable_reqwest_rustls" ) ) ]
49
- #[ cfg( not( target_arch = "wasm32" ) ) ]
50
- #[ async_trait]
51
- impl HttpClient for reqwest:: Client {
52
- async fn execute_request ( & self , request : & crate :: Request ) -> crate :: Result < crate :: Response > {
53
- let url = request. url ( ) . clone ( ) ;
54
- let mut reqwest_request = self . request ( request. method ( ) . clone ( ) , url) ;
55
- for ( name, value) in request. headers ( ) . iter ( ) {
56
- reqwest_request = reqwest_request. header ( name. as_str ( ) , value. as_str ( ) ) ;
57
- }
58
-
59
- let body = request. body ( ) . clone ( ) ;
60
-
61
- let reqwest_request = match body {
62
- Body :: Bytes ( bytes) => reqwest_request
63
- . body ( bytes)
64
- . build ( )
65
- . context ( ErrorKind :: Other , "failed to build request" ) ?,
66
- Body :: SeekableStream ( mut seekable_stream) => {
67
- seekable_stream. reset ( ) . await . unwrap ( ) ; // TODO: remove unwrap when `HttpError` has been removed
68
-
69
- reqwest_request
70
- . body ( reqwest:: Body :: wrap_stream ( seekable_stream) )
71
- . build ( )
72
- . context ( ErrorKind :: Other , "failed to build request" ) ?
73
- }
74
- } ;
75
-
76
- let reqwest_response = self
77
- . execute ( reqwest_request)
78
- . await
79
- . context ( ErrorKind :: Io , "failed to execute request" ) ?;
80
-
81
- let status = reqwest_response. status ( ) ;
82
- let headers = Headers :: from ( reqwest_response. headers ( ) ) ;
83
- let body: PinnedStream = Box :: pin ( reqwest_response. bytes_stream ( ) . map_err ( |error| {
84
- Error :: full (
85
- ErrorKind :: Io ,
86
- error,
87
- "error converting `reqwest` request into a byte stream" ,
88
- )
89
- } ) ) ;
90
-
91
- Ok ( crate :: Response :: new ( status, headers, body) )
92
- }
93
- }
94
-
95
48
/// Serialize a type to json.
96
49
pub fn to_json < T > ( value : & T ) -> crate :: Result < Bytes >
97
50
where
0 commit comments