use actix_web::{ web, App, HttpServer, middleware::Logger };
use actix_web::middleware::Compress;
use env_logger::Env;
mod root_handler;
mod page_handler;
mod sitemap_handler;
mod build_handler;
mod robots_handler;
mod api_handler;
#[actix_web::main]
async fn main() -> std::io::Result<()> {
env_logger::Builder::from_env(Env::default().default_filter_or("info")).init();
println!("Server is running on http://127.0.0.1:8080");
build_handler::build_static_files().unwrap();
HttpServer::new(|| {
App::new()
.wrap(Compress::default()) .wrap(Logger::default()) .service(web::resource("/").route(web::get().to(root_handler::root)))
.service(web::resource("/sitemap.xml").route(web::get().to(sitemap_handler::sitemap)))
.service(web::resource("/robots.txt").route(web::get().to(robots_handler::robots)))
.service(web::resource("/{name}").route(web::get().to(page_handler::page)))
.service(actix_files::Files::new("/static", "./static").show_files_listing())
.service(web::resource("/api/{name}").route(web::get().to(api_handler::api_handler)))
.service(actix_files::Files::new("/static", "./out").show_files_listing()) })
.bind("127.0.0.1:8080")?
.run().await
}