pub struct AwsV4Signer { /* private fields */ }
Expand description
Singer that implement AWS SigV4.
Implementations§
Source§impl Signer
impl Signer
Sourcepub fn sign(
&self,
req: &mut impl SignableRequest,
cred: &Credential,
) -> Result<()>
pub fn sign( &self, req: &mut impl SignableRequest, cred: &Credential, ) -> Result<()>
Signing request with header.
§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<()> {
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(())
}
Sourcepub fn sign_query(
&self,
req: &mut impl SignableRequest,
expire: Duration,
cred: &Credential,
) -> Result<()>
pub fn sign_query( &self, req: &mut impl SignableRequest, expire: Duration, cred: &Credential, ) -> Result<()>
Signing request with query.
§Example
use std::time::Duration;
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<()> {
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_query(&mut req, Duration::from_secs(3600), &credential)?;
// Sending already signed request.
let resp = client.execute(req).await?;
println!("resp got status: {}", resp.status());
Ok(())
}
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Signer
impl RefUnwindSafe for Signer
impl Send for Signer
impl Sync for Signer
impl Unpin for Signer
impl UnwindSafe for Signer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
Source§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Decompress response bodies. Read more
Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more