From ccef1a4c8b96549ab16acd6e2813f9d26ff2e526 Mon Sep 17 00:00:00 2001 From: Jason Volk <jason@zemos.net> Date: Sun, 28 Jul 2024 21:31:35 +0000 Subject: [PATCH] add formal wrapping for api state Signed-off-by: Jason Volk <jason@zemos.net> --- src/api/mod.rs | 4 ++-- src/api/router.rs | 6 ++---- src/api/router/state.rs | 22 ++++++++++++++++++++++ src/router/router.rs | 2 +- 4 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 src/api/router/state.rs diff --git a/src/api/mod.rs b/src/api/mod.rs index 7fa70873a..00ae35cd6 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -10,8 +10,8 @@ pub(crate) use conduit::{debug_info, pdu::PduEvent, utils, Error, Result}; pub(crate) use service::services; -pub use crate::router::State; -pub(crate) use crate::router::{Ruma, RumaResponse}; +pub use self::router::State; +pub(crate) use self::router::{Ruma, RumaResponse}; conduit::mod_ctor! {} conduit::mod_dtor! {} diff --git a/src/api/router.rs b/src/api/router.rs index d624de32b..cff58c32d 100644 --- a/src/api/router.rs +++ b/src/api/router.rs @@ -3,8 +3,7 @@ mod handler; mod request; mod response; - -use std::sync::Arc; +mod state; use axum::{ response::IntoResponse, @@ -15,11 +14,10 @@ use http::Uri; use self::handler::RouterExt; +pub use self::state::State; pub(super) use self::{args::Args as Ruma, response::RumaResponse}; use crate::{client, server}; -pub type State = Arc<service::Services>; - pub fn build(router: Router<State>, server: &Server) -> Router<State> { let config = &server.config; let router = router diff --git a/src/api/router/state.rs b/src/api/router/state.rs new file mode 100644 index 000000000..b1149d890 --- /dev/null +++ b/src/api/router/state.rs @@ -0,0 +1,22 @@ +use std::{ops::Deref, sync::Arc}; + +use conduit_service::Services; + +#[derive(Clone)] +pub struct State { + services: Arc<Services>, +} + +impl State { + pub fn new(services: Arc<Services>) -> Self { + Self { + services, + } + } +} + +impl Deref for State { + type Target = Arc<Services>; + + fn deref(&self) -> &Self::Target { &self.services } +} diff --git a/src/router/router.rs b/src/router/router.rs index 3527f1e6d..e59b088be 100644 --- a/src/router/router.rs +++ b/src/router/router.rs @@ -9,7 +9,7 @@ pub(crate) fn build(services: &Arc<Services>) -> Router { let router = Router::<State>::new(); - let state = services.clone(); + let state = State::new(services.clone()); conduit_api::router::build(router, &services.server) .route("/", get(it_works)) -- GitLab