Signing API requests without effort.
Most API is simple. But they could be complicated when they are hidden from complex abstraction. reqsign
bring the simple API back: build, sign, send.
```rust use anyhow::Result; use reqsign::AwsConfig; use reqsign::AwsLoader; use reqsign::AwsV4Signer; use reqwest::Client; use reqwest::Request; use reqwest::Url;
async fn main() -> Result<()> { // Signer can load region and credentials from environment by default. let client = Client::new(); let config = AwsConfig::default().fromprofile().fromenv(); let loader = AwsLoader::new(client.clone(), config); let signer = AwsV4Signer::new("s3", "us-east-1"); // Construct request let url = Url::parse("https://s3.amazonaws.com/testbucket")?; let mut req = reqwest::Request::new(http::Method::GET, url); // Signing request with Signer let credential = loader.load().await?.unwrap(); signer.sign(&mut req, &credential)?; // Sending already signed request. let resp = client.execute(req).await?; println!("resp got status: {}", resp.status()); Ok(()) } ```
reqsign::AliyunOssSigner
reqsign::AwsV4Signer
reqsign::AzureStorageSigner
reqsign::GoogleSigner
reqsign::HuaweicloudObsSigner
Check out the CONTRIBUTING.md guide for more details on getting started with contributing to this project.
Submit issues for bug report or asking questions in discussion.
Inspired a lot from:
Licensed under Apache License, Version 2.0.