use actix_web::client::Client; use http_signature_normalization_actix::prelude::*; use sha2::{Digest, Sha256}; #[actix_rt::main] async fn main() -> Result<(), Box> { let config = Config::default(); let mut digest = Sha256::new(); let mut response = Client::default() .post("http://127.0.0.1:8010/") .header("User-Agent", "Actix Web") .authorization_signature_with_digest(&config, "my-key-id", &mut digest, "Hewwo-owo", |s| { Ok(base64::encode(s)) as Result<_, MyError> })? .send() .await .map_err(|e| { eprintln!("Error, {}", e); MyError::SendRequest })?; let body = response.body().await.map_err(|e| { eprintln!("Error, {}", e); MyError::Body })?; println!("{:?}", body); Ok(()) } #[derive(Debug, thiserror::Error)] pub enum MyError { #[error("Failed to read header, {0}")] Convert(#[from] ToStrError), #[error("Failed to create header, {0}")] Header(#[from] InvalidHeaderValue), #[error("Failed to send request")] SendRequest, #[error("Failed to retrieve request body")] Body, }