diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-12-14 23:53:26 -0800 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-12-14 23:55:51 -0800 |
commit | 4fd40b1f9de400a5d859789e1dad3e1a4ba6587c (patch) | |
tree | 74fbae949aa3fb9711c06e31cb6649e90a8cdb97 /src/api.ts | |
download | uptime-4fd40b1f9de400a5d859789e1dad3e1a4ba6587c.tar.gz uptime-4fd40b1f9de400a5d859789e1dad3e1a4ba6587c.zip |
initial commit
Diffstat (limited to 'src/api.ts')
-rw-r--r-- | src/api.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/api.ts b/src/api.ts new file mode 100644 index 0000000..d8a3008 --- /dev/null +++ b/src/api.ts @@ -0,0 +1,40 @@ +import { perform } from "./email"; +import type { EmailJob } from "./job"; +import { ConsoleLogger } from "./logger"; + +export const main = (port: number) => { + const server = Bun.serve({ + port, + async fetch(req) { + ConsoleLogger.log(`Received request: ${req.url}`)(); + + const url = new URL(req.url); + if (req.method === "POST" && url.pathname === "/api/email") { + const job: EmailJob = await req.json(); + const jobInsensitive = structuredClone(job); + jobInsensitive.from.username = "****REDACTED****"; + jobInsensitive.from.password = "****REDACTED****"; + jobInsensitive.to.username = "****REDACTED****"; + jobInsensitive.to.password = "****REDACTED****"; + + ConsoleLogger.log( + `Received email job: ${JSON.stringify(jobInsensitive)}`, + )(); + + const performEmailTest = perform(job)(); + return await performEmailTest + .then(() => { + return Response.json({ success: true }); + }) + .catch((error) => { + return new Response(error.message, { + status: 400, + }); + }); + } + return new Response("404!", { status: 404 }); + }, + }); + ConsoleLogger.log(`Listening on port ${port}`)(); + return server; +}; |