diff --git a/Cargo.lock b/Cargo.lock index a2349be..feefe21 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -334,6 +334,7 @@ name = "kawari" version = "0.1.0" dependencies = [ "axum", + "minijinja", "rand", "serde", "serde_json", @@ -372,6 +373,15 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minijinja" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7165d0e94806d52ad5295e4b54a95176d831814840bc067298ca647e1c956338" +dependencies = [ + "serde", +] + [[package]] name = "miniz_oxide" version = "0.7.2" diff --git a/Cargo.toml b/Cargo.toml index 87cfe10..90d3e3b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,4 +29,5 @@ tokio = { version = "1.37", features = ["macros", "rt", "rt-multi-thread"], defa tracing = { version = "0.1", default-features = false } serde = { version = "1.0", features = ["derive"], default-features = false } tracing-subscriber = { version = "0.3", features = ["fmt"], default-features = false } -rand = "0.8" \ No newline at end of file +rand = "0.8" +minijinja = "2.0" \ No newline at end of file diff --git a/src/bin/kawari-admin.rs b/src/bin/kawari-admin.rs index 583dd18..00fd381 100644 --- a/src/bin/kawari-admin.rs +++ b/src/bin/kawari-admin.rs @@ -9,6 +9,8 @@ use serde::{Deserialize, Serialize}; use axum::response::{Html, Redirect}; use axum::routing::post; use kawari::config::{Config, get_config}; +use minijinja::{Environment, context}; +use kawari::setup_default_environment; #[derive(Debug, Clone, Serialize, Deserialize)] struct GateStatus { @@ -20,7 +22,9 @@ async fn root() -> Html { let config = get_config(); - Html(format!("

Gate open:{}

", config.gate_open)) + let environment = setup_default_environment(); + let template = environment.get_template("admin.html").unwrap(); + Html(template.render(context! { gate_open => config.gate_open }).unwrap()) } #[derive(Deserialize, Debug)] diff --git a/src/lib.rs b/src/lib.rs index 338f7eb..31e3e8d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,4 @@ +use minijinja::Environment; use rand::distributions::Alphanumeric; use rand::Rng; @@ -10,4 +11,11 @@ pub fn generate_sid() -> String { .map(char::from) .collect(); random_id.to_lowercase() +} + +pub fn setup_default_environment() -> Environment<'static> { + let mut env = Environment::new(); + env.add_template("admin.html", include_str!("../templates/admin.html")).unwrap(); + + env } \ No newline at end of file diff --git a/templates/admin.html b/templates/admin.html new file mode 100644 index 0000000..91b43f7 --- /dev/null +++ b/templates/admin.html @@ -0,0 +1 @@ +

Gate open:{{ gate_open }}

\ No newline at end of file