aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs47
1 files changed, 38 insertions, 9 deletions
diff --git a/src/main.rs b/src/main.rs
index 7f55089..e5cfb31 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -6,14 +6,18 @@ pub mod web;
use ::log::error;
use anyhow::{anyhow, Result};
-use axum::{routing::get, Router};
+use axum::{response::Html, routing::get, Router};
use check::{check_loop, Check};
use chrono::{DateTime, Utc};
use mail::MailConfig;
+use reqwest::{
+ header::{CACHE_CONTROL, CONTENT_TYPE, REFRESH},
+ StatusCode,
+};
use serde::Deserialize;
use std::{collections::BTreeMap, net::SocketAddr, process::exit, sync::Arc};
use tokio::{fs::read_to_string, sync::RwLock};
-use web::send_html_page;
+use web::make_html_page;
pub static GLOBAL_ERROR: RwLock<Option<anyhow::Error>> = RwLock::const_new(None);
@@ -63,13 +67,38 @@ async fn run() -> anyhow::Result<()> {
tokio::task::spawn(check_loop(config.clone(), i));
}
- let app = Router::new().route(
- "/",
- get({
- let config = config.clone();
- move || send_html_page(config.clone())
- }),
- );
+ let app = Router::new()
+ .route(
+ "/",
+ get({
+ let config = config.clone();
+ move || async move {
+ (
+ [
+ (
+ CACHE_CONTROL,
+ format!("max-age={}, public", config.interval),
+ ),
+ (REFRESH, format!("{}", config.interval)),
+ ],
+ Html(make_html_page(config.clone()).await),
+ )
+ }
+ }),
+ )
+ .route(
+ "/font.woff2",
+ get(|| async {
+ (
+ [
+ (CONTENT_TYPE, "font/woff2"),
+ (CACHE_CONTROL, "public, immutable"),
+ ],
+ include_bytes!("cantarell.woff2"),
+ )
+ }),
+ )
+ .route("/favicon.ico", get(|| async { StatusCode::NO_CONTENT }));
let listener = tokio::net::TcpListener::bind(config.bind).await?;
axum::serve(listener, app).await?;
Ok(())