add formal wrapping for api state
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
5c258f41c8
commit
ccef1a4c8b
4 changed files with 27 additions and 7 deletions
|
@ -10,8 +10,8 @@ extern crate conduit_service as service;
|
||||||
pub(crate) use conduit::{debug_info, pdu::PduEvent, utils, Error, Result};
|
pub(crate) use conduit::{debug_info, pdu::PduEvent, utils, Error, Result};
|
||||||
pub(crate) use service::services;
|
pub(crate) use service::services;
|
||||||
|
|
||||||
pub use crate::router::State;
|
pub use self::router::State;
|
||||||
pub(crate) use crate::router::{Ruma, RumaResponse};
|
pub(crate) use self::router::{Ruma, RumaResponse};
|
||||||
|
|
||||||
conduit::mod_ctor! {}
|
conduit::mod_ctor! {}
|
||||||
conduit::mod_dtor! {}
|
conduit::mod_dtor! {}
|
||||||
|
|
|
@ -3,8 +3,7 @@ mod auth;
|
||||||
mod handler;
|
mod handler;
|
||||||
mod request;
|
mod request;
|
||||||
mod response;
|
mod response;
|
||||||
|
mod state;
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use axum::{
|
use axum::{
|
||||||
response::IntoResponse,
|
response::IntoResponse,
|
||||||
|
@ -15,11 +14,10 @@ use conduit::{err, Server};
|
||||||
use http::Uri;
|
use http::Uri;
|
||||||
|
|
||||||
use self::handler::RouterExt;
|
use self::handler::RouterExt;
|
||||||
|
pub use self::state::State;
|
||||||
pub(super) use self::{args::Args as Ruma, response::RumaResponse};
|
pub(super) use self::{args::Args as Ruma, response::RumaResponse};
|
||||||
use crate::{client, server};
|
use crate::{client, server};
|
||||||
|
|
||||||
pub type State = Arc<service::Services>;
|
|
||||||
|
|
||||||
pub fn build(router: Router<State>, server: &Server) -> Router<State> {
|
pub fn build(router: Router<State>, server: &Server) -> Router<State> {
|
||||||
let config = &server.config;
|
let config = &server.config;
|
||||||
let router = router
|
let router = router
|
||||||
|
|
22
src/api/router/state.rs
Normal file
22
src/api/router/state.rs
Normal file
|
@ -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 }
|
||||||
|
}
|
|
@ -9,7 +9,7 @@ use ruma::api::client::error::ErrorKind;
|
||||||
|
|
||||||
pub(crate) fn build(services: &Arc<Services>) -> Router {
|
pub(crate) fn build(services: &Arc<Services>) -> Router {
|
||||||
let router = Router::<State>::new();
|
let router = Router::<State>::new();
|
||||||
let state = services.clone();
|
let state = State::new(services.clone());
|
||||||
|
|
||||||
conduit_api::router::build(router, &services.server)
|
conduit_api::router::build(router, &services.server)
|
||||||
.route("/", get(it_works))
|
.route("/", get(it_works))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue