Files
AstralRinth/src/main.rs
2020-06-22 21:04:17 -07:00

58 lines
1.4 KiB
Rust

#[macro_use]
extern crate serde_json;
#[macro_use]
extern crate bson;
#[macro_use]
extern crate log;
use actix_files as fs;
use actix_web::{web, App, HttpServer};
use handlebars::*;
use actix_web::middleware::Logger;
use env_logger::Env;
use std::env;
mod database;
mod helpers;
mod routes;
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
env_logger::from_env(Env::default().default_filter_or("info")).init();
dotenv::dotenv().ok();
//Handlebars
let mut handlebars = Handlebars::new();
helpers::register_helpers(&mut handlebars);
handlebars
.register_templates_directory(".hbs", "./templates")
.unwrap();
let handlebars_ref = web::Data::new(handlebars);
let client = database::connect().await.unwrap();
routes::index_mods(client).await.unwrap();
info!("Starting Actix HTTP server!");
//Init App
HttpServer::new(move || {
App::new()
.wrap(Logger::default())
.wrap(Logger::new("%a %{User-Agent}i"))
.app_data(handlebars_ref.clone())
.service(fs::Files::new("/static", "./static").show_files_listing())
.service(routes::index_get)
.service(routes::search_post)
.service(routes::search_get)
.service(routes::mod_page_get)
.service(routes::mod_create_get)
})
.bind("127.0.0.1:8000")?
.run()
.await
}