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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
//! # Simple AWS S3 //! Provides the simple way to work with AWS S3. It use reqwest to execute the reqwest. //! //! This package is developing while waiting the fully supported from [aws-sdk](https://github.com/awslabs/aws-sdk-rust) from Amazon. //! ### Features: //! //! + Post Presigned (Upload from browser) //! + Get Presigned (Download from browser) //! + Bucket Operations: //! + Object Operations: //! + Head Object (Retrieve Information of an Object) //! + Delete Object //! //! ### Examples: //! use chrono::Duration; //! use reqwest::multipart::{Form, Part}; //! use reqwest::StatusCode; //! use simple_aws_s3::{PostPresignedInfo, S3}; //! //! // Before run this example, please replace s3 config below by your config. //! const ACCESS_KEY: &str = "AKIAIOSFODNN7EXAMPLE"; //! const SECRET_KEY: &str = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"; //! const REGION: &str = "us-east-1"; //! const ENDPOINT: &str = "s3.amazonaws.com"; //! const BUCKET: &str = "examplebucket"; //! //! #[tokio::main] //! async fn main() { //! let s3 = S3::new(BUCKET, REGION, ENDPOINT, ACCESS_KEY, SECRET_KEY); //! //! let key = String::from("text.txt"); //! let content = "Hello world"; //! //! // Upload by Post Presigned //! let PostPresignedInfo { upload_url, params } = s3 //! .generate_presigned_post( //! key.clone(), //! "plain/text", //! 10485760, //! Duration::seconds(3600), //! None, //! ) //! .unwrap(); //! let mut form = Form::new(); //! for (key, value) in params { //! form = form.text(key, value); //! } //! let part = Part::text(content).mime_str("plain/text").unwrap(); //! form = form.part("file", part); //! let res = reqwest::Client::new() //! .post(&upload_url) //! .multipart(form) //! .send() //! .await //! .unwrap(); //! assert_eq!(res.status(), StatusCode::NO_CONTENT); //! //! // Download by Query Param (Get Presigned) //! let download_url = s3.generate_presigned_get(&key, 3600).unwrap(); //! let res = reqwest::Client::new() //! .get(&download_url) //! .send() //! .await //! .unwrap(); //! assert_eq!(res.status(), StatusCode::OK); //! assert_eq!(res.text().await.unwrap(), content); //! } //! + [Upload/Download](https://github.com/cptrodgers/simple-aws-s3/tree/master/examples) //! ``` #[macro_use] extern crate serde; pub mod error; pub mod s3; pub mod s3_constant; pub mod s3_post_policy; pub mod s3_signer; pub mod s3_string_to_sign; // Export as main level pub use s3::*; pub use s3_constant::*; pub use s3_post_policy::*; pub use s3_signer::*; pub use s3_string_to_sign::*; // Export dependencies pub mod prelude { pub use hmac; pub use reqwest; pub use sha2; }