diff --git a/src/api/mod.rs b/src/api/mod.rs index 7fa70873afff2626638d45680df8cc2c42863cd2..00ae35cd6be293fbb34ec4666cf72da427ccdcc9 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 d624de32bc2ae3e99d512da4a9a327e366edb82e..cff58c32d0cc3a176271bc21ffbe90b77d65fda1 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 0000000000000000000000000000000000000000..b1149d8900af913998868909274daa15add3023d --- /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 3527f1e6ded552869edb801e69735147328e5032..e59b088be68fc52d94d239165f0e0d2819e6f8bc 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))