1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
//! Initilize S3 handler to manipulate objects and buckets //! use s3handler = { features = ["blocking"] } //! ``` //! let config = s3handler::blocking::CredentialConfig{ //! host: "s3.us-east-1.amazonaws.com".to_string(), //! access_key: "akey".to_string(), //! secret_key: "skey".to_string(), //! user: None, //! region: None, // default is us-east-1 //! s3_type: None, // default will try to config as AWS S3 handler //! secure: None, // dafault is false, because the integrity protect by HMAC //! }; //! let mut handler = s3handler::blocking::Handler::from(&config); //! let _ = handler.la(); //! ``` //! //! Download a file with async api //! use s3handler = { features = ["tokio-async"] } //! ``` //! // Public resource //! let s3_pool = s3handler::none_blocking::primitives::S3Pool::new("somewhere.in.the.world".to_string()); //! let obj = s3_pool.bucket("bucket_name").object("objcet_name"); //! async { //! obj.download_file("/path/to/save/a/file").await; //! }; //! //! ``` //! //! S3 async handler to manipulate objects and buckets. //! This treat all data as pool and create a canal to bridge two pool. //! It is easy to management and sync data from folder to S3, S3 to S3, event folder to folder. //! //! >>>no_run //! +------+ //! | Pool | (UpPool) modify by *from_* prefixed api //! +------+ //! | ^ //! Pull | | Push //! v | //! +------+ //! | Pool | (DownPool) modify by *toward_* prefixed api //! +------+ //! >>> //! //! ``` //! use s3handler::none_blocking::traits::DataPool; //! //! // Resource with AWS version 2 auth //! let s3_pool = s3handler::none_blocking::primitives::S3Pool::new("somewhere.in.the.world".to_string()) //! .aws_v2("access-key".to_string(), "secrete-key".to_string()); //! let bucket = s3_pool.bucket("bucket_name"); //! // Actually the bucket is a unconnnected canal //! assert!(!bucket.is_connect()); //! let canal = bucket.toward("/path/to/another/folder").unwrap(); //! // The canal bridges the two folder and ready to transfer data between bucket and folder //! assert!(canal.is_connect()); //! // canal.sync().awit; //! ``` #[cfg(feature = "blocking")] pub mod blocking; #[cfg(feature = "blocking")] pub use blocking::*; // #[cfg(feature = "std-async")] // pub mod async_std; #[cfg(feature = "tokio-async")] pub mod tokio_async; #[cfg(feature = "tokio-async")] pub use tokio_async as none_blocking; pub mod error; pub use utils::{S3Convert, S3Object}; pub mod utils;