mod context;
mod cors;
mod dispatch;
mod router;
mod server;
pub use context::{AxumContext, scope_axum, use_axum};
pub use cors::AxumCors;
pub use router::{WebRouteResultFuture, WebRouteWrapper, WebRouter};
pub use server::{AxumBuilder, AxumServer, axum_builder};
use crate::dispatch::{AxumState, dispatch};
use axum::Router;
use axum::routing::any;
use framework_web::WebContext;
use std::sync::Arc;
pub type AxumCorsFn = Arc<dyn Fn(&WebContext) -> AxumCors + Send + Sync>;
pub fn build_router(wrapper: Option<WebRouteWrapper>) -> WebRouter {
WebRouter::new(wrapper)
}
pub(crate) fn build_router_with(
router: Arc<WebRouter>,
context: AxumContext,
cors: AxumCorsFn,
) -> Router {
Router::new().fallback(any(dispatch)).with_state(AxumState {
router,
context,
cors,
})
}