aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-05-04 14:15:24 +0200
committermetamuffin <metamuffin@disroot.org>2024-05-04 14:15:24 +0200
commita4d49095d1fa40fc7152d069006d1121300235bb (patch)
tree22577936ef637df2c859be2259d004ba29b6ae2b /src/main.rs
parent24b10f4d389fcc5c23406eceef5d6e9a35551d21 (diff)
downloadstatuspage-a4d49095d1fa40fc7152d069006d1121300235bb.tar
statuspage-a4d49095d1fa40fc7152d069006d1121300235bb.tar.bz2
statuspage-a4d49095d1fa40fc7152d069006d1121300235bb.tar.zst
embed font
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(())