summaryrefslogtreecommitdiff
path: root/src/api.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/api.ts')
-rw-r--r--src/api.ts53
1 files changed, 0 insertions, 53 deletions
diff --git a/src/api.ts b/src/api.ts
deleted file mode 100644
index 6f7db38..0000000
--- a/src/api.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { perform } from "./email";
-import { redactJob, type EmailJob } from "./job";
-import { ConsoleLogger, type Logger } from "./logger";
-
-export const main = (port: number) => {
- const server = Bun.serve({
- port,
- async fetch(req) {
- ConsoleLogger.info(`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 = redactJob(job);
-
- const uuid = crypto.randomUUID();
- const logger: Logger = {
- info: (message) => ConsoleLogger.info(`[${uuid}] ${message}`),
- warn: (message) => ConsoleLogger.warn(`[${uuid}] ${message}`),
- error: (message) => ConsoleLogger.error(`[${uuid}] ${message}`),
- }
- logger.info(
- `Received email job: ${JSON.stringify(jobInsensitive)}`,
- )();
-
- const performEmailTest = perform(job, undefined, logger)();
- return performEmailTest
- .then((result) => {
- if (result._tag === "Left") {
- const error = result.left;
- logger.warn(
- `job failure due to ${error.message}`,
- )();
- return new Response(error.message, {
- status: 400,
- });
- }
- logger.info('success')();
- return Response.json({ success: true });
- })
- .catch((e) => {
- logger.error(`internal failure due to ${e}`)();
- return new Response(e.message, {
- status: 500,
- });
- });
- }
- return new Response("404!", { status: 404 });
- },
- });
- ConsoleLogger.info(`Listening on port ${port}`)();
- return server;
-};