const beeline = require("honeycomb-beeline")({ writeKey: process.env["HONEYCOMB_WRITE_KEY"], dataset: process.env["NODE_ENV"] === "production" ? "Dress to Impress (2020)" : "Dress to Impress (2020, dev)", serviceName: "impress-2020-gql-server", disableInstrumentationOnLoad: true, }); import sendgridMail from "@sendgrid/mail"; sendgridMail.setApiKey(process.env.SENDGRID_API_KEY); async function handle(req, res) { const { content, email } = req.body; if (!content) { return res.status(400).send("Content must not be empty"); } let contentSummary = content.trim(); if (contentSummary.length > 60) { contentSummary = contentSummary.slice(0, 40) + "…"; } const senderText = email || ""; console.info(`Sending from ${senderText}:\n${content}`); const body = `${content}\n\nSent by ${senderText}`; try { await sendgridMail.send({ to: "matchu1993@gmail.com", from: "impress-2020-feedback@openneo.net", subject: `DTI feedback: ${contentSummary}`, replyTo: email || undefined, text: body, }); } catch (e) { console.error(e); if (e.response && e.response.body && e.response.body.errors) { console.error(e.response.body.errors); } return res.status(500).send("Error sending message, see logs"); } return res.status(200).send(); } async function handleWithBeeline(req, res) { beeline.withTrace( { name: "api/sendFeedback", operation_name: "api/sendFeedback" }, () => handle(req, res) ); } export default handleWithBeeline;