summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authormetamuffin <metamuffin@yandex.com>2021-12-19 19:55:06 +0100
committermetamuffin <metamuffin@yandex.com>2021-12-19 19:55:06 +0100
commitdf5b106f9a782f66a036ebc3ce3dc39b82363acf (patch)
treecb553d81e7aea81285f36c2f178b372d08d750df /source
parentc35da9dc7882f3b51054590e01349ee4e37a027c (diff)
downloadmetamuffin-website-df5b106f9a782f66a036ebc3ce3dc39b82363acf.tar
metamuffin-website-df5b106f9a782f66a036ebc3ce3dc39b82363acf.tar.bz2
metamuffin-website-df5b106f9a782f66a036ebc3ce3dc39b82363acf.tar.zst
moved from node to deno and added annoying javascript reminder
Diffstat (limited to 'source')
-rw-r--r--source/index.ts55
1 files changed, 30 insertions, 25 deletions
diff --git a/source/index.ts b/source/index.ts
index 2106b32..9c4fa90 100644
--- a/source/index.ts
+++ b/source/index.ts
@@ -1,40 +1,45 @@
// SPDX-License-Identifier: AGPL-3.0-only
-import express from "express"
-import { readFileSync } from "fs"
-import { readFile } from "fs/promises"
-import { join } from "path/posix"
-import pug from "pug"
+import { Application, Router, Response } from "https://deno.land/x/oak/mod.ts";
+import { compile, compileTemplate } from "https://deno.land/x/pug/mod.ts";
-const app = express()
-const render_env = {
- commit: readFileSync(join(__dirname, "../.git/refs/heads/main")).toString().substr(0, 8)
+const app = new Application()
+const router = new Router()
+
+const renderEnv = {
+ commit: Deno.readTextFileSync("./.git/refs/heads/main").toString().substr(0, 8)
}
-app.disable('x-powered-by');
+const templates: Map<string, compileTemplate> = new Map()
+async function render(response: Response, name: string) {
+ const template = templates.get(name) ?? compile(await Deno.readTextFile(`./views/${name}.pug`), { filename: `./views/${name}.pug`, name: name })
+ templates.set(name, template)
+ response.body = template(renderEnv)
-app.set("view engine", "pug")
-app.set("views", join(__dirname, "../views"))
+}
-app.get("/", (req, res) => res.redirect("/about"))
+router.get("/", ({ response }) => response.redirect("/about"))
-app.get("/about", (req, res) => res.render("about", render_env))
-app.get("/projects", (req, res) => res.render("projects", render_env))
-app.get("/contact", (req, res) => res.render("contact", render_env))
-app.get("/links", (req, res) => res.render("links", render_env))
+router.get("/about", ({ response }) => render(response, "about"))
+router.get("/projects", ({ response }) => render(response, "projects"))
+router.get("/contact", ({ response }) => render(response, "contact"))
+router.get("/links", ({ response }) => render(response, "links"))
-app.get("/licence", async (req, res) => {
- const content = (await readFile(join(__dirname, "../LICENCE"))).toString()
- res.type("text/plain").send(content)
+router.get("/licence", async ({ response }) => {
+ const content = await Deno.readTextFile("LICENCE")
+ response.headers.set("content-type", "text/plain")
+ response.body = content
})
-app.get("/favicon.ico", (req,res) => res.sendStatus(204)) // no content
-app.get("/robots.txt", (req,res) => {
- res.send("User-Agent: *\nDisallow: /\n")
+router.get("/favicon.ico", ({ response }) => response.status = 204) // no content
+router.get("/robots.txt", ({ response }) => {
+ response.body = "User-Agent: *\nDisallow: /\n"
})
-const PORT = parseInt(process.env.PORT ?? "8080")
-const HOST = process.env.HOST || "127.0.0.1"
+const port = parseInt(Deno.env.get("PORT") ?? "8080")
+const hostname = Deno.env.get("HOST") || "127.0.0.1"
-app.listen(PORT, HOST, () => console.log("aaaaa"))
+app.use(router.routes())
+app.listen({ port, hostname })
+console.log(`listening on http://${hostname}:${port}`);