Crate reqsign

Source
Expand description

Signing API requests without effort.

§Example

use anyhow::Result;
use reqsign::AwsConfig;
use reqsign::AwsDefaultLoader;
use reqsign::AwsV4Signer;
use reqwest::Client;
use reqwest::Request;
use reqwest::Url;

#[tokio::main]
async fn main() -> Result<()> {
    // Signer can load region and credentials from environment by default.
    let client = Client::new();
    let config = AwsConfig::default().from_profile().from_env();
    let loader = AwsDefaultLoader::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(())
}

§Available Services

  • [Aliyun OSS][crate::AliyunOssSigner] for Aliyun OSS.
  • AWS SigV4 for AWS services like S3.
  • [Azure Storage][crate::AzureStorageSigner] for Azure Storage services like Azure Blob Service.
  • [Google][crate::GoogleSigner] for All google cloud services like Google Cloud Storage Service.
  • [Huawei Cloud OBS][crate::HuaweicloudObsSigner] for Huawei Cloud Object Storage Service (OBS).

§Features

reqsign support http::Request by default. Other request types support are hided under feature gates to reduce dependencies.

Structs§

AwsAssumeRoleLoader
AssumeRoleLoader will load credential via assume role.
AwsConfig
Config for aws services.
AwsCredential
Credential that holds the access_key and secret_key.
AwsDefaultLoader
CredentialLoader will load credential from different methods.
AwsV4Signer
Singer that implement AWS SigV4.

Traits§

AwsCredentialLoad
Loader trait will try to load credential from different sources.