2024-11-01 08:35:25 +00:00
|
|
|
use std::{net::TcpListener, process};
|
2024-10-29 20:58:10 +00:00
|
|
|
|
|
|
|
use ctrlc;
|
2024-11-01 08:35:25 +00:00
|
|
|
use http::responses::Response;
|
2024-10-29 20:58:10 +00:00
|
|
|
|
2024-11-01 08:35:25 +00:00
|
|
|
mod handlers;
|
2024-10-29 20:58:10 +00:00
|
|
|
mod http;
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let listener =
|
2024-11-01 08:48:55 +00:00
|
|
|
TcpListener::bind("[::]:7878").unwrap_or_else(|_| fatal("Failed to bind to address"));
|
2024-10-29 20:58:10 +00:00
|
|
|
|
|
|
|
ctrlc::set_handler(move || {
|
|
|
|
println!("Shutting down...");
|
|
|
|
process::exit(0);
|
|
|
|
})
|
|
|
|
.unwrap_or_else(|_| fatal("Failed to set termination signal handler"));
|
|
|
|
|
2024-11-01 08:35:25 +00:00
|
|
|
let mut handlers = handlers::Handlers::new();
|
2024-10-29 20:58:10 +00:00
|
|
|
|
2024-11-01 08:35:25 +00:00
|
|
|
handlers.add_handler("/", |req| {
|
|
|
|
if req.method == "GET" {
|
|
|
|
Response::new(req, 200, "OK - luciders is running")
|
|
|
|
} else {
|
|
|
|
Response::new(req, 405, "Method Not Allowed")
|
2024-10-29 20:58:10 +00:00
|
|
|
}
|
2024-11-01 08:35:25 +00:00
|
|
|
});
|
2024-10-30 02:49:27 +00:00
|
|
|
|
2024-11-01 08:35:25 +00:00
|
|
|
handlers.bind(listener);
|
2024-10-29 20:58:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
fn fatal(msg: &'static str) -> ! {
|
|
|
|
eprintln!("[FATAL] {}", msg);
|
|
|
|
process::exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn error(msg: &'static str) {
|
|
|
|
eprintln!("[ERROR] {}", msg);
|
|
|
|
}
|