From 71a54454bfeaf537bae4bbce639d513f02be88be Mon Sep 17 00:00:00 2001 From: arctic_hen7 Date: Fri, 20 Aug 2021 06:57:07 +1000 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9C=A8=20added=20request=20conversio?= =?UTF-8?q?n=20logic=20for=20actix=20web?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/showcase/server/src/conv_req.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/examples/showcase/server/src/conv_req.rs b/examples/showcase/server/src/conv_req.rs index 022fa1c5ee..2e65349e18 100644 --- a/examples/showcase/server/src/conv_req.rs +++ b/examples/showcase/server/src/conv_req.rs @@ -3,7 +3,22 @@ use perseus::{HttpRequest, Request}; // TODO set up proper error handling in an integration crate /// Converts an Actix Web request into an `http::request`. pub fn convert_req(raw: &actix_web::HttpRequest) -> Result { - let req = HttpRequest::builder() + let mut builder = HttpRequest::builder(); + // Add headers one by one + for (name, val) in raw.headers() { + // Each method call consumes and returns `self`, so we re-self-assign + builder = builder.header(name, val); + } + // The URI to which the request was sent + builder = builder.uri(raw.uri()); + // The method (e.g. GET, POST, etc.) + builder = builder.method(raw.method()); + // The HTTP version used + builder = builder.version(raw.version()); + + let req = builder + // We always use an empty body because, in a Perseus request, only the URI matters + // Any custom data should therefore be sent in headers (if you're doing that, consider a dedicated API) .body(()) .map_err(|err| format!("converting actix web request to perseus-compliant request failed: '{}'", err))?;