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