@@ -22,6 +22,7 @@ use tokio::io::AsyncWrite as TokioAsyncWrite;
22
22
use reqwest:: header:: HeaderMap ;
23
23
24
24
use async_std:: fs:: File ;
25
+ use async_std:: path:: Path ;
25
26
26
27
/// # Example
27
28
/// ```
@@ -335,19 +336,23 @@ impl Bucket {
335
336
Ok ( request. tokio_response_data_to_writer_future ( writer) . await ?)
336
337
}
337
338
338
- pub async fn put_object_stream < S : AsRef < str > > ( & self , path : & str , s3_path : S ) -> Result < u16 > {
339
+ pub async fn put_object_stream (
340
+ & self ,
341
+ path : impl AsRef < Path > ,
342
+ s3_path : impl AsRef < str > ,
343
+ ) -> Result < u16 > {
339
344
let mut file = File :: open ( path) . await ?;
340
- self . _put_object_stream ( & mut file, s3_path) . await
345
+ self . _put_object_stream ( & mut file, s3_path. as_ref ( ) ) . await
341
346
}
342
347
343
- async fn _put_object_stream < R : AsyncRead + Unpin , S : AsRef < str > > (
348
+ async fn _put_object_stream < R : AsyncRead + Unpin > (
344
349
& self ,
345
350
reader : & mut R ,
346
- s3_path : S ,
351
+ s3_path : & str ,
347
352
) -> Result < u16 > {
348
353
let chunk_size: usize = 5_300_000 ; // min is 5_242_880;
349
354
let command = Command :: InitiateMultipartUpload ;
350
- let path = format ! ( "{}?uploads" , s3_path. as_ref ( ) ) ;
355
+ let path = format ! ( "{}?uploads" , s3_path) ;
351
356
let request = Request :: new ( self , & path, command) ;
352
357
let ( data, code) = request. response_data_future ( false ) . await ?;
353
358
let msg: InitiateMultipartUploadResponse =
@@ -391,7 +396,7 @@ impl Bucket {
391
396
let abort_path = format ! ( "{}?uploadId={}" , msg. key, & msg. upload_id) ;
392
397
let abort_request = Request :: new ( self , & abort_path, abort) ;
393
398
let ( _, _code) = abort_request. response_data_future ( false ) . await ?;
394
- self . put_object ( s3_path. as_ref ( ) , chunk. as_slice ( ) ) . await ?;
399
+ self . put_object ( s3_path, chunk. as_slice ( ) ) . await ?;
395
400
break ;
396
401
} else {
397
402
part_number += 1 ;
@@ -512,7 +517,11 @@ impl Bucket {
512
517
/// Ok(())
513
518
/// }
514
519
/// ```
515
- pub fn put_object_stream_blocking < S : AsRef < str > > ( & self , path : & str , s3_path : S ) -> Result < u16 > {
520
+ pub fn put_object_stream_blocking (
521
+ & self ,
522
+ path : impl AsRef < Path > ,
523
+ s3_path : impl AsRef < str > ,
524
+ ) -> Result < u16 > {
516
525
let mut rt = Runtime :: new ( ) ?;
517
526
Ok ( rt. block_on ( self . put_object_stream ( path, s3_path) ) ?)
518
527
}
0 commit comments