2023-05-10 12:21:20 +00:00
|
|
|
import { Status } from "https://deno.land/std@0.186.0/http/http_status.ts";
|
2023-05-11 13:59:44 +00:00
|
|
|
import prettyTime from "npm:pretty-time";
|
2023-05-11 08:29:54 +00:00
|
|
|
import { HTTPServer } from "../mod.ts";
|
2023-05-10 12:21:20 +00:00
|
|
|
|
|
|
|
const httpServer = new HTTPServer();
|
2023-05-11 06:42:45 +00:00
|
|
|
|
2023-05-11 11:11:14 +00:00
|
|
|
httpServer.middleware(async (req, done) => {
|
2023-05-11 13:59:44 +00:00
|
|
|
const perStart = performance.now();
|
2023-05-11 10:33:57 +00:00
|
|
|
console.log(`${req.method} - ${req.ip()} - ${req.path}`);
|
2023-05-11 11:11:14 +00:00
|
|
|
await done();
|
2023-05-11 13:59:44 +00:00
|
|
|
const pt = performance.now() - perStart;
|
|
|
|
const hrArray: number[] = [0, Math.trunc(pt * 1000000)];
|
|
|
|
console.log(`Processed in ${prettyTime(hrArray)}`);
|
2023-05-11 11:11:14 +00:00
|
|
|
});
|
2023-05-11 10:16:13 +00:00
|
|
|
|
2023-05-11 07:32:18 +00:00
|
|
|
httpServer.error((req, _rep) => {
|
|
|
|
return JSON.stringify(
|
|
|
|
{
|
|
|
|
code: Status.NotFound,
|
|
|
|
message: "Route not found!",
|
|
|
|
path: req.path,
|
2023-05-11 09:53:28 +00:00
|
|
|
url: req.url,
|
2023-05-11 07:32:18 +00:00
|
|
|
},
|
|
|
|
null,
|
|
|
|
2,
|
|
|
|
);
|
2023-05-11 09:53:28 +00:00
|
|
|
});
|
2023-05-11 07:32:18 +00:00
|
|
|
|
2023-05-11 04:46:41 +00:00
|
|
|
httpServer.add("GET", "/", (req, rep) => {
|
2023-05-10 14:28:01 +00:00
|
|
|
rep.status(Status.Teapot)
|
|
|
|
.header("working", "true")
|
2023-05-11 04:46:41 +00:00
|
|
|
.type("application/json")
|
2023-05-10 14:28:01 +00:00
|
|
|
.cookie("working", "true");
|
2023-05-11 06:42:45 +00:00
|
|
|
|
2023-05-11 04:46:41 +00:00
|
|
|
console.log(req.cookie("working"));
|
|
|
|
|
2023-05-11 09:53:28 +00:00
|
|
|
return {
|
|
|
|
code: Status.Teapot,
|
|
|
|
message: "Hello World!",
|
|
|
|
};
|
2023-05-10 12:21:20 +00:00
|
|
|
});
|
2023-05-11 06:42:45 +00:00
|
|
|
|
2023-05-11 04:46:41 +00:00
|
|
|
httpServer.add("GET", "/api/user/:userId", (req, rep) => {
|
|
|
|
rep.status(Status.Teapot)
|
2023-05-11 06:42:45 +00:00
|
|
|
.type("application/json");
|
2023-05-11 04:46:41 +00:00
|
|
|
|
2023-05-11 05:03:10 +00:00
|
|
|
console.log(req.queryParams);
|
|
|
|
|
2023-05-11 04:46:41 +00:00
|
|
|
return JSON.stringify(
|
|
|
|
{
|
|
|
|
code: Status.Teapot,
|
2023-05-11 06:42:45 +00:00
|
|
|
message: `UserID is ${req.pathParam("userId")}`,
|
|
|
|
queryParams: req.queryParams,
|
2023-05-11 04:46:41 +00:00
|
|
|
},
|
|
|
|
null,
|
|
|
|
2,
|
|
|
|
);
|
|
|
|
});
|
2023-05-11 06:42:45 +00:00
|
|
|
|
2023-05-10 12:21:20 +00:00
|
|
|
httpServer.listen({
|
|
|
|
port: 8080,
|
2023-05-10 12:57:29 +00:00
|
|
|
staticLocalDir: "/static",
|
|
|
|
staticServePath: "/assets",
|
2023-05-10 12:21:20 +00:00
|
|
|
});
|