51 releases (13 breaking)
new 0.13.0 | May 31, 2023 |
---|---|
0.11.0 | May 18, 2023 |
0.8.5 | Mar 15, 2023 |
0.7.3 | Dec 20, 2022 |
0.0.3 | Mar 28, 2022 |
#92 in Web programming
57,737 downloads per month
Used in 4 crates
(2 directly)
225KB
5K
SLoC
reqsign

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.
Quick Start
use reqsign::AwsV4Signer;
use reqwest::{Client, Request, Url};
use anyhow::Result;
#[tokio::main]
async fn main() -> Result<()>{
// Signer will load region and credentials from environment by default.
let signer = AwsV4Signer::builder().service("s3").build()?;
// 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
signer.sign(&mut req)?;
// Sending already signed request.
let resp = Client::new().execute(req).await?;
println!("resp got status: {}", resp.status());
Ok(())
}
Features
- Pure rust with minimal dependencies.
- Test again official SDK and services.
- Supported services
- Aliyun OSS:
reqsign::AliyunOssSigner
- AWS services (SigV4):
reqsign::AwsV4Signer
- Azure Storage services:
reqsign::AzureStorageSigner
- Google services:
reqsign::GoogleSigner
- Huawei Cloud OBS:
reqsign::HuaweicloudObsSigner
- Aliyun OSS:
Contributing
Check out the CONTRIBUTING.md guide for more details on getting started with contributing to this project.
Getting help
Submit issues for bug report or asking questions in discussion.
Acknowledge
Inspired a lot from:
- aws-sigv4 for AWS SigV4 support.
- azure_storage_blobs for Azure Storage support.
License
Licensed under Apache License, Version 2.0.Dependencies
~5–16MB
~318K SLoC