use crate::{database::Database, library::Library, CONF}; use jellyremuxer::RemuxerContext; use rocket::{catchers, config::SecretKey, fs::FileServer, routes, Build, Config, Rocket}; use stream::r_stream; use ui::{ account::{ admin::{r_account_admin_dashboard, r_account_admin_invite, r_account_admin_remove_user}, r_account_login, r_account_login_post, r_account_logout, r_account_logout_post, r_account_register, r_account_register_post, }, error::r_catch, home::{r_home, r_home_unpriv}, node::{r_item_assets, r_library_node}, player::r_player, style::{r_assets_font, r_assets_js, r_assets_style}, }; pub mod stream; pub mod ui; #[macro_export] macro_rules! uri { ($kk:stmt) => { &rocket::uri!($kk).to_string() }; } pub fn build_rocket( remuxer: RemuxerContext, library: Library, database: Database, ) -> Rocket { rocket::build() .configure(Config { secret_key: SecretKey::derive_from(CONF.cookie_key.as_bytes()), ..Default::default() }) .manage(remuxer) .manage(library) .manage(database) .register("/", catchers![r_catch]) .mount("/assets", FileServer::from(&CONF.asset_dir)) .mount( "/", routes![ r_home, r_home_unpriv, r_library_node, r_assets_style, r_assets_font, r_assets_js, r_stream, r_player, r_account_login, r_account_login_post, r_account_register, r_account_register_post, r_account_logout, r_account_logout_post, r_account_admin_dashboard, r_account_admin_invite, r_account_admin_remove_user, r_item_assets, ], ) }