#[get("/_/<leaf>")]
fn resource(leaf : CheckedResourceLeaf) -> io::Result<NamedFile> {
- let template_dir = "templates";
- NamedFile::open(format!("{}/{}", template_dir, leaf.safe))
+ NamedFile::open(format!("{}/{}", config().template_dir, leaf.safe))
}
#[throws(StartupError)]
if let Some(port) = c.http_port {
cbuilder = cbuilder.port(port);
}
+ cbuilder.extras.insert("template_dir".to_owned(),
+ c.template_dir.clone().into());
let rconfig = cbuilder.finalize()?;
let r = rocket::custom(rconfig)
const DEFAULT_SAVE_DIRECTORY : &str = "save";
const DEFAULT_COMMAND_SOCKET : &str = "command.socket"; // in save dir
+const DEFAULT_TEMPLATE_DIR : &str = "templates";
#[derive(Deserialize,Debug,Clone)]
pub struct ServerConfigSpec {
pub debug: Option<bool>,
pub http_port: Option<u16>,
pub rocket_workers: Option<u16>,
+ pub template_dir: Option<String>,
}
#[derive(Debug,Clone)]
pub debug: bool,
pub http_port: Option<u16>,
pub rocket_workers: u16,
+ pub template_dir: String,
}
impl TryFrom<ServerConfigSpec> for ServerConfig {
fn try_from(spec: ServerConfigSpec) -> ServerConfig {
let ServerConfigSpec {
save_directory, command_socket, debug,
- http_port, rocket_workers,
+ http_port, rocket_workers, template_dir
} = spec;
let save_directory = save_directory
let rocket_workers = rocket_workers.unwrap_or(
if debug { 20 } else { 1000 });
+ let template_dir = template_dir
+ .unwrap_or_else(|| DEFAULT_TEMPLATE_DIR.to_owned());
+
ServerConfig {
save_directory, command_socket, debug,
- http_port, rocket_workers,
+ http_port, rocket_workers, template_dir
}
}
}