diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml
index c53bf7f..87269d2 100644
--- a/.idea/watcherTasks.xml
+++ b/.idea/watcherTasks.xml
@@ -7,7 +7,7 @@
-
+
-
+
diff --git a/deps.ts b/deps.ts
index bcc504b..3a7e9f6 100644
--- a/deps.ts
+++ b/deps.ts
@@ -4,4 +4,7 @@ export {
assertThrows,
} from "https://deno.land/std@0.87.0/testing/asserts.ts";
export { readLines } from "https://deno.land/std@0.87.0/io/bufio.ts";
-export { listenAndServe } from "https://deno.land/std@0.87.0/http/server.ts";
+export {
+ listenAndServe,
+ ServerRequest,
+} from "https://deno.land/std@0.87.0/http/server.ts";
diff --git a/server.ts b/server.ts
index bc478c1..7876aca 100644
--- a/server.ts
+++ b/server.ts
@@ -1,8 +1,32 @@
-import { listenAndServe } from "./deps.ts";
+import { listenAndServe, ServerRequest } from "./deps.ts";
+import { ID, sayHello, sayRandomHello } from "./src/index.ts";
const port = 8000;
-console.log(`Server listening on http://localhost:${port}/`);
-await listenAndServe({ port }, (req) => req.respond({ body: "Hello" }));
+const parseURL = (url: string) => {
+ const parts = url.slice(1).split("/");
+ return parts[0];
+};
-// write handler using req.url
+const serve = async (port: number) => {
+ console.log(`Server listening on http://localhost:${port}/`);
+
+ await listenAndServe({ port }, (req: ServerRequest) => {
+ console.log(`Request on address '${req.url}'`);
+
+ if (parseURL(req.url) === "") {
+ return req.respond({ body: sayRandomHello() });
+ }
+
+ try {
+ const value = parseInt(parseURL(req.url), 10);
+ const id = new ID(value);
+ return req.respond({ body: sayHello(id) });
+ } catch (error) {
+ console.error(error);
+ return req.respond({ body: error.message });
+ }
+ });
+};
+
+await serve(port);