@@ -87,15 +87,17 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
8787 let res = retry (
8888 || async {
8989 let url = format ! ( "{}/getObject" , self . base_url) ;
90- self . post_request ( request, & url) . await . and_then ( |response : GetObjectResponse | {
91- if response. value . is_none ( ) {
92- Err ( VssError :: InternalServerError (
90+ self . post_request ( request, & url, true ) . await . and_then (
91+ |response : GetObjectResponse | {
92+ if response. value . is_none ( ) {
93+ Err ( VssError :: InternalServerError (
9394 "VSS Server API Violation, expected value in GetObjectResponse but found none" . to_string ( ) ,
9495 ) )
95- } else {
96- Ok ( response)
97- }
98- } )
96+ } else {
97+ Ok ( response)
98+ }
99+ } ,
100+ )
99101 } ,
100102 & self . retry_policy ,
101103 )
@@ -123,7 +125,7 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
123125 let res = retry (
124126 || async {
125127 let url = format ! ( "{}/putObjects" , self . base_url) ;
126- self . post_request ( request, & url) . await
128+ self . post_request ( request, & url, false ) . await
127129 } ,
128130 & self . retry_policy ,
129131 )
@@ -149,7 +151,7 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
149151 let res = retry (
150152 || async {
151153 let url = format ! ( "{}/deleteObject" , self . base_url) ;
152- self . post_request ( request, & url) . await
154+ self . post_request ( request, & url, false ) . await
153155 } ,
154156 & self . retry_policy ,
155157 )
@@ -177,7 +179,7 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
177179 let res = retry (
178180 || async {
179181 let url = format ! ( "{}/listKeyVersions" , self . base_url) ;
180- self . post_request ( request, & url) . await
182+ self . post_request ( request, & url, true ) . await
181183 } ,
182184 & self . retry_policy ,
183185 )
@@ -189,7 +191,7 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
189191 }
190192
191193 async fn post_request < Rq : Message , Rs : Message + Default > (
192- & self , request : & Rq , url : & str ,
194+ & self , request : & Rq , url : & str , enable_pipelining : bool ,
193195 ) -> Result < Rs , VssError > {
194196 let request_body = request. encode_to_vec ( ) ;
195197 let headers = self
@@ -198,13 +200,16 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
198200 . await
199201 . map_err ( |e| VssError :: AuthError ( e. to_string ( ) ) ) ?;
200202
201- let http_request = bitreq:: post ( url)
203+ let mut http_request = bitreq:: post ( url)
202204 . with_header ( CONTENT_TYPE , APPLICATION_OCTET_STREAM )
203205 . with_headers ( headers)
204206 . with_body ( request_body)
205207 . with_timeout ( DEFAULT_TIMEOUT_SECS )
206- . with_max_body_size ( Some ( MAX_RESPONSE_BODY_SIZE ) )
207- . with_pipelining ( ) ;
208+ . with_max_body_size ( Some ( MAX_RESPONSE_BODY_SIZE ) ) ;
209+
210+ if enable_pipelining {
211+ http_request = http_request. with_pipelining ( ) ;
212+ }
208213
209214 let response = self . client . send_async ( http_request) . await ?;
210215
0 commit comments