From b549e99d5344ec55ae715b207327d81c04f05489 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Fri, 15 Mar 2024 23:28:19 +0100 Subject: [PATCH] simplify auth extractor --- crates/auth/src/extractor.rs | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/crates/auth/src/extractor.rs b/crates/auth/src/extractor.rs index 8530d6a..877a84f 100644 --- a/crates/auth/src/extractor.rs +++ b/crates/auth/src/extractor.rs @@ -1,6 +1,8 @@ use actix_web::{dev::Payload, web::Data, FromRequest, HttpRequest}; -use futures_util::Future; -use std::{marker::PhantomData, task::Poll}; +use std::{ + future::{ready, Ready}, + marker::PhantomData, +}; use crate::error::Error; @@ -20,35 +22,19 @@ impl From for AuthInfoExtractor { } } -pub struct AuthInfoExtractorFuture(Result, PhantomData); - -impl Future for AuthInfoExtractorFuture { - type Output = Result, Error>; - - fn poll( - self: std::pin::Pin<&mut Self>, - _cx: &mut std::task::Context<'_>, - ) -> std::task::Poll { - match &self.0 { - Ok(auth_info) => Poll::Ready(Ok(AuthInfoExtractor { - inner: auth_info.clone(), - _provider_type: PhantomData, - })), - Err(err) => Poll::Ready(Err(err.clone())), - } - } -} - impl FromRequest for AuthInfoExtractor where A: CheckAuthentication, { type Error = Error; - type Future = AuthInfoExtractorFuture; + type Future = Ready>; fn extract(req: &HttpRequest) -> Self::Future { let result = req.app_data::>().unwrap().validate(req); - AuthInfoExtractorFuture(result, PhantomData) + ready(result.map(|auth_info| Self { + inner: auth_info, + _provider_type: PhantomData, + })) } fn from_request(req: &HttpRequest, _payload: &mut Payload) -> Self::Future { Self::extract(req)