add funcs for better content handling
This commit is contained in:
parent
03a1f35eaa
commit
e3e5f8c1d2
|
@ -2,6 +2,19 @@ import { Status } from "https://deno.land/std@0.186.0/http/http_status.ts";
|
||||||
import prettyTime from "npm:pretty-time";
|
import prettyTime from "npm:pretty-time";
|
||||||
import { HTTPServer } from "../mod.ts";
|
import { HTTPServer } from "../mod.ts";
|
||||||
|
|
||||||
|
const JOKES = [
|
||||||
|
"Why do Java developers often wear glasses? They can't C#.",
|
||||||
|
"A SQL query walks into a bar, goes up to two tables and says “can I join you?”",
|
||||||
|
"Wasn't hard to crack Forrest Gump's password. 1forrest1.",
|
||||||
|
"I love pressing the F5 key. It's refreshing.",
|
||||||
|
"Called IT support and a chap from Australia came to fix my network connection. I asked “Do you come from a LAN down under?”",
|
||||||
|
"There are 10 types of people in the world. Those who understand binary and those who don't.",
|
||||||
|
"Why are assembly programmers often wet? They work below C level.",
|
||||||
|
"My favourite computer based band is the Black IPs.",
|
||||||
|
"What programme do you use to predict the music tastes of former US presidential candidates? An Al Gore Rhythm.",
|
||||||
|
"An SEO expert walked into a bar, pub, inn, tavern, hostelry, public house.",
|
||||||
|
];
|
||||||
|
|
||||||
const httpServer = new HTTPServer();
|
const httpServer = new HTTPServer();
|
||||||
|
|
||||||
httpServer.preprocessor((_req, rep) => {
|
httpServer.preprocessor((_req, rep) => {
|
||||||
|
@ -27,6 +40,30 @@ httpServer.error((req, _rep) => {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
httpServer.get("/api/joke", (_req, rep) => {
|
||||||
|
const randomIndex = Math.floor(Math.random() * JOKES.length);
|
||||||
|
const joke = JOKES[randomIndex];
|
||||||
|
rep.json({
|
||||||
|
code: 200,
|
||||||
|
joke,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
httpServer.get("/site", (_req, rep) => {
|
||||||
|
const htmlTest = `
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>HTML Test</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Hello World!</h1>
|
||||||
|
<button onclick="alert('bruh')">Useless button, do not press.</button>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`;
|
||||||
|
rep.html(htmlTest);
|
||||||
|
});
|
||||||
|
|
||||||
httpServer.get("/", (req, rep) => {
|
httpServer.get("/", (req, rep) => {
|
||||||
rep.status(Status.Teapot)
|
rep.status(Status.Teapot)
|
||||||
.header("working", "true")
|
.header("working", "true")
|
||||||
|
|
13
mod.ts
13
mod.ts
|
@ -176,7 +176,7 @@ export class HTTPServer {
|
||||||
let handler = await route.handler(
|
let handler = await route.handler(
|
||||||
routeRequest,
|
routeRequest,
|
||||||
routeReply,
|
routeReply,
|
||||||
);
|
) ?? routeReply.body;
|
||||||
|
|
||||||
if (typeof (handler) == "object") {
|
if (typeof (handler) == "object") {
|
||||||
handler = JSON.stringify(handler, null, 2);
|
handler = JSON.stringify(handler, null, 2);
|
||||||
|
@ -374,6 +374,17 @@ export class RouteRequest {
|
||||||
export class RouteReply {
|
export class RouteReply {
|
||||||
headers: Headers = new Headers();
|
headers: Headers = new Headers();
|
||||||
statusCode: Status = Status.OK;
|
statusCode: Status = Status.OK;
|
||||||
|
body: unknown;
|
||||||
|
|
||||||
|
json(json: JSON | { [key: string]: unknown } | []) {
|
||||||
|
this.type("application/json");
|
||||||
|
this.body = JSON.stringify(json, null, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
html(html: string) {
|
||||||
|
this.type("text/html");
|
||||||
|
this.body = html;
|
||||||
|
}
|
||||||
|
|
||||||
header(name: string, value: string): RouteReply {
|
header(name: string, value: string): RouteReply {
|
||||||
this.headers.set(name, value);
|
this.headers.set(name, value);
|
||||||
|
|
Reference in New Issue
Block a user