// @flow import Koa from "koa"; import Router from "koa-router"; import { NotFoundError } from "../errors"; import { Mailer } from "../mailer"; const emailPreviews = new Koa(); const router = new Router(); router.get("/:type/:format", async (ctx) => { let mailerOutput; let mailer = new Mailer(); mailer.transporter = { sendMail: (data) => (mailerOutput = data), }; switch (ctx.params.type) { // case 'emailWithProperties': // mailer.emailWithProperties('user@example.com', {...properties}); // break; default: if (Object.getOwnPropertyNames(mailer).includes(ctx.params.type)) { // $FlowIssue flow doesn't like this but we're ok with it mailer[ctx.params.type]("user@example.com"); } else throw new NotFoundError("Email template could not be found"); } if (!mailerOutput) return; if (ctx.params.format === "text") { ctx.body = mailerOutput.text; } else { ctx.body = mailerOutput.html; } }); emailPreviews.use(router.routes()); export default emailPreviews;