#![forbid(unsafe_code)]
use crate::errors::Error;
use askama::Template;
use log::{
debug,
};
#[derive(Template)]
#[template(path = "index.html", escape = "none")]
struct IndexTemplate<'a> {
telemetry_path: &'a str,
}
pub(in crate::httpd)
fn render_index_page(telemetry_path: &str)
-> Result<String, Error> {
debug!("Rendering index template");
let index_template = IndexTemplate {
telemetry_path: &telemetry_path,
};
match index_template.render() {
Ok(i) => Ok(i),
Err(e) => Err(Error::RenderTemplate(format!("index: {}", e))),
}
}
#[cfg(test)]
mod tests {
use super::*;
use indoc::indoc;
use pretty_assertions::assert_eq;
#[test]
fn render_index_page_ok() {
let path = "/a1b2c3";
let rendered = render_index_page(&path).unwrap();
let ok = indoc!(
r#"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Jail Exporter</title>
</head>
<body>
<h1>Jail Exporter</h1>
<p><a href="/a1b2c3">Metrics</a></p>
</body>
</html>"#
);
assert_eq!(rendered, ok);
}
}