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:: * ;
18#[ allow( unused_imports) ]
29use crate :: error:: { Error , ErrorKind , ResultExt } ;
310#[ allow( unused_imports) ]
@@ -10,13 +17,6 @@ use bytes::Bytes;
1017use futures:: TryStreamExt ;
1118use serde:: Serialize ;
1219
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-
2020/// An HTTP client which can send requests.
2121#[ cfg_attr( target_arch = "wasm32" , async_trait( ?Send ) ) ]
2222#[ cfg_attr( not( target_arch = "wasm32" ) , async_trait) ]
@@ -45,53 +45,6 @@ pub trait HttpClient: Send + Sync + std::fmt::Debug {
4545 }
4646}
4747
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-
9548/// Serialize a type to json.
9649pub fn to_json < T > ( value : & T ) -> crate :: Result < Bytes >
9750where
0 commit comments