Skip to main content

flyer/
lib.rs

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
20// Leak server memory
21static 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}