From 991b8942514134425a4cce549d954b0d8788ce7b Mon Sep 17 00:00:00 2001 From: Jacob Rothstein Date: Wed, 26 Jul 2023 14:05:08 -0700 Subject: [PATCH] =?UTF-8?q?add=20GET=20{aggregator=5Fapi}/=20=E2=86=92=20A?= =?UTF-8?q?ggregatorApiConfig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aggregator_api/src/lib.rs | 20 +++++++++----------- aggregator_core/src/lib.rs | 4 ++-- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/aggregator_api/src/lib.rs b/aggregator_api/src/lib.rs index 3b27f9fbc..5aeece7f9 100644 --- a/aggregator_api/src/lib.rs +++ b/aggregator_api/src/lib.rs @@ -105,24 +105,22 @@ pub fn aggregator_api_handler(ds: Arc>, cfg: Config) -> i ) } -async fn auth_check(conn: &mut Conn, State(cfg): State>) -> impl Handler { - let bearer_token = match extract_bearer_token(conn) { - Ok(Some(t)) => t, - _ => { - return Some((Status::Unauthorized, Halt)); - } +async fn auth_check(conn: &mut Conn, (): ()) -> impl Handler { + let (Some(cfg), Ok(Some(bearer_token))) = + (conn.state::>(), extract_bearer_token(conn)) + else { + return Some((Status::Unauthorized, Halt)); }; if cfg.auth_tokens.iter().any(|key| { constant_time::verify_slices_are_equal(bearer_token.as_ref(), key.as_ref()).is_ok() }) { // Authorization succeeds. - conn.set_state(cfg); - return None; + None + } else { + // Authorization fails. + Some((Status::Unauthorized, Halt)) } - - // Authorization fails. - Some((Status::Unauthorized, Halt)) } async fn get_config(_: &mut Conn, State(config): State>) -> Json { diff --git a/aggregator_core/src/lib.rs b/aggregator_core/src/lib.rs index adbd575ad..8e9179b22 100644 --- a/aggregator_core/src/lib.rs +++ b/aggregator_core/src/lib.rs @@ -68,8 +68,8 @@ impl InstrumentedHandler { self.0.run(conn).instrument(span).await } - async fn before_send(&self, conn: Conn) -> Conn { - if let Some(span) = conn.state::() { + async fn before_send(&self, mut conn: Conn) -> Conn { + if let Some(span) = conn.take_state::() { let conn = self.0.before_send(conn).instrument(span.0.clone()).await; span.0.in_scope(|| { let status = conn