Crates.io | common-s3-headers |
lib.rs | common-s3-headers |
version | 1.0.0 |
source | src |
created_at | 2024-01-10 14:57:48.644882 |
updated_at | 2024-01-11 04:40:57.283914 |
description | Only the headers necessary for communicating with S3-like services. It's all you need. |
homepage | |
repository | https://github.com/softwarepatterns-com/common-rust/tree/main/common-s3-headers |
max_upload_size | |
id | 1095260 |
size | 45,285 |
Only the headers necessary for communicating with S3-like services. It's all you need.
// Get from S3 from some location.
let url = Url::from_str("https://example.s3.amazonaws.com/test/test.json").unwrap();
let headers = S3HeadersBuilder::new(&url)
.set_access_key(&access_key)
.set_secret_key(&secret_key)
.set_region(®ion)
.set_method("GET")
.set_service("s3")
.build();
// Use Reqwest or any other library!
let response = reqwest::blocking::Client::new()
.get(url)
.headers(reqwest::header::HeaderMap::from_iter(headers.into_iter().map(
|(k, v)| {
(
reqwest::header::HeaderName::from_str(k).unwrap(),
reqwest::header::HeaderValue::from_str(&v).unwrap(),
)
},
)))
.send()
.unwrap();
// We want to put content into S3.
let url = Url::from_str("https://example.s3.amazonaws.com/test/test.json").unwrap();
let content = "{\"c\":\"d\"}\n".as_bytes().to_vec();
// Build the S3 headers.
let (access_key, secret_key, region) = setup::get_config_from_env("TEST_S3");
let headers = S3HeadersBuilder::new(&url)
.set_access_key(&access_key)
.set_secret_key(&secret_key)
.set_region(®ion)
.set_method(PUT_METHOD)
.set_service("s3")
.set_payload_hash_with_content(&content)
.build();
// Use Reqwest or any other library!
let response = reqwest::blocking::Client::new()
.put(url)
.headers(reqwest::header::HeaderMap::from_iter(headers.into_iter().map(
|(k, v)| {
(
reqwest::header::HeaderName::from_str(k).unwrap(),
reqwest::header::HeaderValue::from_str(&v).unwrap(),
)
},
)))
.send()
.unwrap();
let url = Url::from_str("https://example.s3.amazonaws.com/").unwrap();
let headers = S3HeadersBuilder::new(&url)
.set_access_key(&access_key)
.set_secret_key(&secret_key)
.set_region(®ion)
.set_method("GET")
.set_service("s3")
.build();
// Use Reqwest or any other library!
let response = reqwest::blocking::Client::new()
.get(url)
.headers(reqwest::header::HeaderMap::from_iter(headers.into_iter().map(
|(k, v)| {
(
reqwest::header::HeaderName::from_str(k).unwrap(),
reqwest::header::HeaderValue::from_str(&v).unwrap(),
)
},
)))
.send()
.unwrap();