From d3c715ecc5c46bfae9054ce2dad64e9b3df5c77c Mon Sep 17 00:00:00 2001 From: asonix Date: Wed, 10 Feb 2021 15:45:51 -0600 Subject: [PATCH] Update to actix-web 4.0.0-beta.3 --- http-signature-normalization-actix/Cargo.toml | 10 +++++----- http-signature-normalization-actix/README.md | 6 +++--- .../examples/client.rs | 15 ++++++--------- .../src/digest/middleware.rs | 8 ++++---- .../src/digest/mod.rs | 7 ++++--- .../src/digest/sign.rs | 12 ++++++------ http-signature-normalization-actix/src/lib.rs | 13 +++++-------- .../src/middleware.rs | 10 +++++----- http-signature-normalization-actix/src/sign.rs | 8 ++++---- 9 files changed, 42 insertions(+), 47 deletions(-) diff --git a/http-signature-normalization-actix/Cargo.toml b/http-signature-normalization-actix/Cargo.toml index 1b920b3..cc1d685 100644 --- a/http-signature-normalization-actix/Cargo.toml +++ b/http-signature-normalization-actix/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "http-signature-normalization-actix" description = "An HTTP Signatures library that leaves the signing to you" -version = "0.5.0-beta.2" +version = "0.5.0-beta.3" authors = ["asonix "] license-file = "LICENSE" readme = "README.md" @@ -25,9 +25,9 @@ name = "client" required-features = ["sha-2"] [dependencies] -actix-web = { version = "4.0.0-beta.1", default-features = false } -awc = { version = "3.0.0-beta.1", default-features = false } -base64 = { version = "0.12", optional = true } +actix-web = { version = "4.0.0-beta.3", default-features = false } +awc = "3.0.0-beta.2" +base64 = { version = "0.13", optional = true } chrono = "0.4.6" futures = "0.3" http-signature-normalization = { version = "0.5.1", path = ".." } @@ -37,5 +37,5 @@ sha3 = { version = "0.9", optional = true } thiserror = "1.0" [dev-dependencies] -actix-rt = "=2.0.0-beta.1" +actix-rt = "2.0.2" pretty_env_logger = "0.4" diff --git a/http-signature-normalization-actix/README.md b/http-signature-normalization-actix/README.md index e581ac0..673870e 100644 --- a/http-signature-normalization-actix/README.md +++ b/http-signature-normalization-actix/README.md @@ -13,10 +13,10 @@ This crate provides extensions the ClientRequest type from Actix Web, and provid #### First, add this crate to your dependencies ```toml -actix-rt = "=2.0.0-beta.1" -actix-web = "4.0.0-beta.1" +actix-rt = "2.0.2" +actix-web = "4.0.0-beta.3" thiserror = "0.1" -http-signature-normalization-actix = { version = "0.5.0-beta.1", default-features = false, features = ["sha-2"] } +http-signature-normalization-actix = { version = "0.5.0-beta.2", default-features = false, features = ["sha-2"] } sha2 = "0.9" ``` diff --git a/http-signature-normalization-actix/examples/client.rs b/http-signature-normalization-actix/examples/client.rs index 0a06dbd..4fd3864 100644 --- a/http-signature-normalization-actix/examples/client.rs +++ b/http-signature-normalization-actix/examples/client.rs @@ -8,9 +8,9 @@ async fn request(config: Config) -> Result<(), Box> { let mut response = Client::default() .post("http://127.0.0.1:8010/") - .header("User-Agent", "Actix Web") - .header("Accept", "text/plain") - .set(actix_web::http::header::Date(SystemTime::now().into())) + .append_header(("User-Agent", "Actix Web")) + .append_header(("Accept", "text/plain")) + .insert_header(actix_web::http::header::Date(SystemTime::now().into())) .signature_with_digest(config, "my-key-id", digest, "Hewwo-owo", |s| { println!("Signing String\n{}", s); Ok(base64::encode(s)) as Result<_, MyError> @@ -62,11 +62,8 @@ pub enum MyError { Canceled, } -impl From> for MyError { - fn from(b: BlockingError) -> Self { - match b { - BlockingError::Error(e) => e, - _ => MyError::Canceled, - } +impl From for MyError { + fn from(_: BlockingError) -> Self { + MyError::Canceled } } diff --git a/http-signature-normalization-actix/src/digest/middleware.rs b/http-signature-normalization-actix/src/digest/middleware.rs index c6269c9..83d81cb 100644 --- a/http-signature-normalization-actix/src/digest/middleware.rs +++ b/http-signature-normalization-actix/src/digest/middleware.rs @@ -111,11 +111,11 @@ where type Error = actix_web::Error; type Future = Pin>>; - fn poll_ready(&mut self, cx: &mut Context) -> Poll> { + fn poll_ready(&self, cx: &mut Context) -> Poll> { self.0.poll_ready(cx) } - fn call(&mut self, mut req: ServiceRequest) -> Self::Future { + fn call(&self, mut req: ServiceRequest) -> Self::Future { if let Some(digest) = req.headers().get("Digest") { let vec = match parse_digest(digest) { Some(vec) => vec, @@ -164,7 +164,7 @@ where verify_digest.update(&bytes2.as_ref()); Ok(verify_digest) as Result }) - .await?; + .await??; if tx.is_closed() { warn!("Payload dropped. If this was unexpected, it could be that the payload isn't required in the route this middleware is guarding"); @@ -174,7 +174,7 @@ where } let verified = - web::block(move || Ok(verify_digest.verify(&vec)) as Result<_, VerifyError>).await?; + web::block(move || Ok(verify_digest.verify(&vec)) as Result<_, VerifyError>).await??; if verified { Ok(()) diff --git a/http-signature-normalization-actix/src/digest/mod.rs b/http-signature-normalization-actix/src/digest/mod.rs index 09737a4..f079533 100644 --- a/http-signature-normalization-actix/src/digest/mod.rs +++ b/http-signature-normalization-actix/src/digest/mod.rs @@ -4,6 +4,7 @@ //! request when request bodies are present use actix_web::{client::ClientRequest, error::BlockingError, http::header::InvalidHeaderValue}; +use awc::SendClientRequest; use std::{fmt::Display, future::Future, pin::Pin}; use crate::{Config, PrepareSignError, Sign}; @@ -51,7 +52,7 @@ pub trait SignExt: Sign { ) -> Pin, E>>>> where F: FnOnce(&str) -> Result + Send + 'static, - E: From> + E: From + From + From + std::fmt::Debug @@ -73,7 +74,7 @@ pub trait SignExt: Sign { ) -> Pin, E>>>> where F: FnOnce(&str) -> Result + Send + 'static, - E: From> + E: From + From + From + std::fmt::Debug @@ -115,7 +116,7 @@ where /// /// This is analogous to `ClientRequest::send_body` and uses the body provided when producing /// the digest - pub fn send(self) -> awc::SendClientRequest { + pub fn send(self) -> SendClientRequest { self.req.send_body(self.body.as_ref().to_vec()) } } diff --git a/http-signature-normalization-actix/src/digest/sign.rs b/http-signature-normalization-actix/src/digest/sign.rs index 411daa8..ea3ebe0 100644 --- a/http-signature-normalization-actix/src/digest/sign.rs +++ b/http-signature-normalization-actix/src/digest/sign.rs @@ -19,7 +19,7 @@ impl SignExt for ClientRequest { ) -> Pin, E>>>> where F: FnOnce(&str) -> Result + Send + 'static, - E: From> + E: From + From + From + std::fmt::Debug @@ -35,10 +35,10 @@ impl SignExt for ClientRequest { let d = digest.compute(v.as_ref()); Ok((d, v)) as Result<(String, V), E> }) - .await?; + .await??; let c = self - .set_header("Digest", format!("{}={}", D::NAME, d)) + .insert_header(("Digest", format!("{}={}", D::NAME, d))) .authorization_signature(config, key_id, f) .await?; @@ -56,7 +56,7 @@ impl SignExt for ClientRequest { ) -> Pin, E>>>> where F: FnOnce(&str) -> Result + Send + 'static, - E: From> + E: From + From + From + std::fmt::Debug @@ -72,10 +72,10 @@ impl SignExt for ClientRequest { let d = digest.compute(v.as_ref()); Ok((d, v)) as Result<(String, V), E> }) - .await?; + .await??; let c = self - .set_header("Digest", format!("{}={}", D::NAME, d)) + .insert_header(("Digest", format!("{}={}", D::NAME, d))) .signature(config, key_id, f) .await?; diff --git a/http-signature-normalization-actix/src/lib.rs b/http-signature-normalization-actix/src/lib.rs index ca6ea6e..407bfad 100644 --- a/http-signature-normalization-actix/src/lib.rs +++ b/http-signature-normalization-actix/src/lib.rs @@ -151,12 +151,9 @@ //! Canceled, //! } //! -//! impl From> for MyError { -//! fn from(b: BlockingError) -> Self { -//! match b { -//! BlockingError::Error(e) => e, -//! _ => MyError::Canceled, -//! } +//! impl From for MyError { +//! fn from(_: BlockingError) -> Self { +//! MyError::Canceled, //! } //! } //! ``` @@ -243,7 +240,7 @@ pub trait Sign { ) -> Pin>>> where F: FnOnce(&str) -> Result + Send + 'static, - E: From> + E: From + From + From + std::fmt::Debug @@ -261,7 +258,7 @@ pub trait Sign { ) -> Pin>>> where F: FnOnce(&str) -> Result + Send + 'static, - E: From> + E: From + From + From + std::fmt::Debug diff --git a/http-signature-normalization-actix/src/middleware.rs b/http-signature-normalization-actix/src/middleware.rs index d41ef48..11b2b12 100644 --- a/http-signature-normalization-actix/src/middleware.rs +++ b/http-signature-normalization-actix/src/middleware.rs @@ -90,13 +90,13 @@ where impl VerifyMiddleware where - T: SignatureVerify + 'static, + T: SignatureVerify + Clone + 'static, T::Future: 'static, S: Service, Error = Error> + 'static, B: MessageBody + 'static, { fn handle( - &mut self, + &self, req: ServiceRequest, ) -> Pin, Error>>>> { let res = self.1.begin_verify( @@ -133,7 +133,7 @@ where let key_id = unverified.key_id().to_owned(); let f1 = unverified.verify(|signature, signing_string| { - self.4.signature_verify( + self.4.clone().signature_verify( algorithm, key_id.clone(), signature.to_string(), @@ -218,11 +218,11 @@ where type Error = actix_web::Error; type Future = Pin>>; - fn poll_ready(&mut self, cx: &mut Context) -> Poll> { + fn poll_ready(&self, cx: &mut Context) -> Poll> { self.0.poll_ready(cx) } - fn call(&mut self, req: ServiceRequest) -> Self::Future { + fn call(&self, req: ServiceRequest) -> Self::Future { let authorization = req.headers().get("Authorization").is_some(); let signature = req.headers().get("Signature").is_some(); diff --git a/http-signature-normalization-actix/src/sign.rs b/http-signature-normalization-actix/src/sign.rs index 8b21ce7..c499262 100644 --- a/http-signature-normalization-actix/src/sign.rs +++ b/http-signature-normalization-actix/src/sign.rs @@ -14,7 +14,7 @@ impl Sign for ClientRequest { ) -> Pin>>> where F: FnOnce(&str) -> Result + Send + 'static, - E: From> + E: From + From + From + std::fmt::Debug @@ -38,7 +38,7 @@ impl Sign for ClientRequest { ) -> Pin>>> where F: FnOnce(&str) -> Result + Send + 'static, - E: From> + E: From + From + From + std::fmt::Debug @@ -63,7 +63,7 @@ async fn prepare( ) -> Result where F: FnOnce(&str) -> Result + Send + 'static, - E: From> + From + std::fmt::Debug + Send + 'static, + E: From + From + std::fmt::Debug + Send + 'static, K: Display, { let mut headers = request.headers().clone(); @@ -93,7 +93,7 @@ where let key_id = key_id.to_string(); - let signed = web::block(move || unsigned.sign(key_id, f)).await?; + let signed = web::block(move || unsigned.sign(key_id, f)).await??; Ok(signed) }