#![feature(decl_macro)] #![feature(lazy_cell)] #[macro_use] extern crate maplit; #[macro_use] extern crate rocket; use std::fs; use std::path::{Path, PathBuf}; use rocket::fs::NamedFile; use rocket_dyn_templates::{ Template }; mod db; use db::*; mod helpers; use helpers::*; mod endpoints; use endpoints::*; mod template_endpoints; use template_endpoints::*; mod config; use config::*; #[get("/")] fn index() -> String { return String::from("gdps-server | https://git.reidlab.online/reidlab/gdps-server"); } #[get("/")] async fn files(file: PathBuf) -> Option { NamedFile::open(Path::new("public/").join(file)).await.ok() } #[launch] fn rocket() -> _ { // this is a bit scuffed fs::create_dir_all(&CONFIG.db.data_folder).expect("failed to create data directory! (probably a permission err)"); fs::create_dir_all(format!("{}/levels", &CONFIG.db.data_folder)).expect("failed to create data directory for levels"); rocket::build() .configure(rocket::Config::figment().merge(("port", CONFIG.general.port))) // actual website .mount("/", routes![ template_endpoints::index::index ]) // assets .mount("/", routes![ files ]) // GEOMETRY DASH https://www.youtube.com/watch?v=_pLrtsf5yfE .mount(CONFIG.general.append_path.as_str(), routes![ endpoints::accounts::login_account::login_account, endpoints::accounts::register_account::register_account, endpoints::accounts::update_account_settings::update_account_settings, endpoints::users::get_users::get_users, endpoints::levels::get_levels::get_levels, endpoints::levels::upload_level::upload_level ]) // so templates work i think .attach(Template::fairing()) }