1use once_cell::sync::OnceCell;
2
3use crate::{
4 server::{Server},
5 utils::server::{TlsPathConfig, get_tls_config, server_config}
6};
7
8pub mod router;
9pub mod request;
10pub mod response;
11pub mod ws;
12pub mod server;
13pub mod utils;
14pub mod cookies;
15pub mod session;
16pub mod view;
17pub mod validation;
18pub mod assets;
19
20static mut GLOBAL_SERVER: OnceCell<Box<Server>> = OnceCell::new();
22
23#[allow(static_mut_refs)]
24pub fn server<'a>(host: &str, port: u16) -> &'a mut Server {
25 return unsafe {
26 let server = Server::new(host, port, None);
27
28 GLOBAL_SERVER
29 .set(Box::new(server))
30 .map_err(|_| "global state already initialized")
31 .unwrap();
32
33 GLOBAL_SERVER.get_mut().unwrap().as_mut()
34 };
35}
36
37#[allow(static_mut_refs)]
38pub fn server_tls<'a>(host: &str, port: u16, key_path: &str, cert_path: &str) -> &'a mut Server {
39 return unsafe {
40 let server = Server::new(
41 host,
42 port,
43 Some(server_config(get_tls_config(&TlsPathConfig::new(key_path, cert_path)).unwrap()).unwrap())
44 );
45
46 GLOBAL_SERVER
47 .set(Box::new(server))
48 .map_err(|_| "global state already initialized")
49 .unwrap();
50
51 GLOBAL_SERVER.get_mut().unwrap().as_mut()
52 };
53}
54
55#[macro_export]
56macro_rules! info {
57 ($msg:expr $(; $($k:expr => $v:expr),* )? ) => {{
58 let logger = crate::utils::logger::logger();
59 slog::info!(logger, $msg; "level" => "info" $(, $($k => $v),* )? );
60 }};
61 ($msg:expr, $($arg:tt)+) => {{
62 let logger = crate::utils::logger::logger();
63 slog::info!(logger, $msg, $($arg)+);
64 }};
65}
66
67#[macro_export]
68macro_rules! warn {
69 ($msg:expr $(; $($k:expr => $v:expr),* )? ) => {{
70 let logger = crate::utils::logger::logger();
71 slog::warn!(logger, $msg; "level" => "warn" $(, $($k => format!("{}", $v)),* )? );
72 }};
73 ($msg:expr, $($arg:tt)+) => {{
74 let logger = crate::utils::logger::logger();
75 slog::warn!(logger, $msg, $($arg)+);
76 }};
77}
78
79#[macro_export]
80macro_rules! success {
81 ($msg:expr $(; $($k:expr => $v:expr),* )? ) => {{
82 let logger = crate::utils::logger::logger();
83 slog::info!(logger, $msg; "level" => "success" $(, $($k => $v),* )? );
84 }};
85 ($msg:expr, $($arg:tt)+) => {{
86 let logger = crate::utils::logger::logger();
87 slog::info!(logger, $msg, $($arg)+);
88 }};
89}
90
91#[macro_export]
92macro_rules! danger {
93 ($msg:expr $(; $($k:expr => $v:expr),* )? ) => {{
94 let logger = crate::utils::logger::logger();
95 slog::error!(logger, $msg; "level" => "danger" $(, $($k => $v),* )? );
96 }};
97 ($msg:expr, $($arg:tt)+) => {{
98 let logger = crate::utils::logger::logger();
99 slog::error!(logger, $msg, $($arg)+);
100 }};
101}