summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib.rs34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 7fe2a73..2dbc4a8 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,6 +1,6 @@
#![allow(mutable_transmutes)]
use maud::{html, Markup, PreEscaped, DOCTYPE};
-use regex::Regex;
+use regex::{Regex, Match};
use std::mem::{take, transmute};
use worker::*;
@@ -23,13 +23,7 @@ async fn text(r: &mut Response) -> Result<String> {
#[event(fetch)]
async fn fetch(req: Request, env: Env, _ctx: Context) -> Result<Response> {
- // wont let me use closures
- let re = |r: Request, _| Response::redirect(r.url()?.join("shitpit")?);
- let hm = |r: Request, _| Response::redirect(r.url()?.join("/")?);
Router::new()
- .get("/journal", re)
- .get("/diary", re)
- .get("/index.html", hm)
.get_async("/shitpit", |req, ctx| async move {
let u = req.url()?;
let a = ctx.env.assets("ASSETS")?;
@@ -58,8 +52,8 @@ async fn fetch(req: Request, env: Env, _ctx: Context) -> Result<Response> {
.map_or_else(|| html! { (PreEscaped(l)) "\n" },
|c| {
let (m, d, y) = (c.get(1), c.get(2), c.get(3));
- let f = |x: Option<regex::Match>| x.unwrap().as_str().parse().unwrap();
- let (y, m, d): (usize, usize, usize) = (f(y) + 2000, f(m), f(d));
+ let f = |x: Option<Match>| -> usize { x.unwrap().as_str().parse().unwrap() };
+ let (y, m, d) = (f(y) + 2000, f(m), f(d));
let s = solar(y, m, d);
let (dowc, dowl) = dow(y, m, d);
let (y, m, d, t) = (s.year, s.month, s.day, s.term);
@@ -104,10 +98,14 @@ async fn fetch(req: Request, env: Env, _ctx: Context) -> Result<Response> {
}
})
})
- .or_else_any_method("/*catchall" /* wtf is this syntax? */ , |_, _| {
- Ok(bone("", "404 Not Found", html! {
- p style="padding: 1vw" { "what?" }
- })?.with_status(404))
+ .or_else_any_method("/*catchall" /* wtf is this syntax? */ , |req, _| {
+ match req.path().as_ref() {
+ "/index.html" => Response::redirect(req.url()?.join("/")?),
+ "/journal" | "/diary" => Response::redirect(req.url()?.join("shitpit")?),
+ _ => Ok(bone("", "404 Not Found", html! {
+ p style="padding: 1vw" { "what?" }
+ })?.with_status(404)),
+ }
})
.run(req, env)
.await
@@ -217,13 +215,11 @@ fn menu(nav: &str) -> Markup {
("shitpit", "/shitpit"),
("about", "/about"),
].iter().peekable();
- @while let Some(&n) = navs.next() {
- a class=(if n.0 == nav { "menuon" } else { "menu" }) href=(n.1) {
- (n.0)
- }
- @if navs.peek().is_some() {
- " / "
+ @while let Some(&(n, l)) = navs.next() {
+ a class=(if n == nav { "menuon" } else { "menu" }) href=(l) {
+ (n)
}
+ @if navs.peek().is_some() { " / " }
}
}
}