Skip to main content

maw/
lib.rs

1use std::sync::LazyLock;
2
3pub use http_body_util;
4pub use hyper;
5
6mod any_value_map;
7mod app;
8mod async_fn;
9
10mod ctx;
11mod error;
12mod handler;
13mod into_response;
14mod request;
15mod response;
16mod router;
17mod status_error;
18
19#[cfg(feature = "static_files")]
20mod static_files;
21
22#[cfg(feature = "websocket")]
23mod websocket;
24
25#[cfg(feature = "static_files")]
26pub use static_files::StaticFiles;
27
28pub mod middlewares {
29    #[cfg(feature = "middleware-cookie")]
30    pub mod cookie;
31
32    #[cfg(feature = "middleware-session")]
33    pub mod session;
34
35    #[cfg(feature = "middleware-csrf")]
36    pub mod csrf;
37
38    #[cfg(feature = "middleware-logging")]
39    pub(crate) mod logging;
40
41    #[cfg(feature = "middleware-catch_panic")]
42    pub(crate) mod catch_panic;
43
44    #[cfg(feature = "middleware-body_limit")]
45    pub(crate) mod body_limit;
46}
47
48#[cfg(feature = "middleware-cookie")]
49pub use middlewares::cookie::CookieMiddleware;
50
51#[cfg(feature = "middleware-session")]
52pub use middlewares::session::SessionMiddleware;
53
54#[cfg(feature = "middleware-csrf")]
55pub use middlewares::csrf::CsrfMiddleware;
56
57#[cfg(feature = "middleware-logging")]
58pub use middlewares::logging::LoggingMiddleware;
59
60#[cfg(feature = "middleware-catch_panic")]
61pub use middlewares::catch_panic::CatchPanicMiddleware;
62
63#[cfg(feature = "middleware-body_limit")]
64pub use middlewares::body_limit::BodyLimitMiddleware;
65
66pub fn all() -> http::Method {
67    http::Method::from_bytes(b"*******").expect("failed to create ALL method") // should never happen
68}
69
70pub static ALL: LazyLock<http::Method> = LazyLock::new(all);
71
72pub mod prelude {
73    pub use crate::app::App;
74    pub use crate::async_fn::AsyncFn1 as Handler;
75    pub use crate::ctx::Ctx;
76    pub use crate::error::Error as MawError;
77    pub use crate::router::{Router, WithState};
78    #[cfg(feature = "static_files")]
79    pub use crate::static_files::StaticFiles;
80    pub use crate::status_error::StatusError;
81    pub use http::StatusCode;
82    pub use http::method::Method;
83    #[cfg(feature = "websocket")]
84    pub use hyper_tungstenite::tungstenite::{Error as WsError, Message as WsMessage};
85    #[cfg(feature = "minijinja")]
86    pub use minijinja;
87    #[cfg(feature = "static_files")]
88    pub use rust_embed;
89}
90
91pub use crate::into_response::IntoResponse;
92pub use crate::response::{BoxError, HttpBody};
93pub use app::config::Config;
94#[cfg(feature = "middleware-cookie")]
95pub use postcard;
96pub use serde_json;
97pub use tokio_util::sync::CancellationToken;