UNPKG

@wepublish/api

Version:
43 lines 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupMailProvider = void 0; const tslib_1 = require("tslib"); const express_1 = require("express"); const context_1 = require("./context"); const api_1 = require("../../utils-api/src"); function setupMailProvider(opts) { const { mailProvider } = opts; const mailProviderWebhookRouter = (0, express_1.Router)(); if (mailProvider) { mailProviderWebhookRouter .route(`/${mailProvider.id}`) .all(mailProvider.incomingRequestHandler, (req, res) => tslib_1.__awaiter(this, void 0, void 0, function* () { res.status(200).send(); // respond immediately with 200 since webhook was received. (0, api_1.logger)('mailProvider').info('Received webhook from %s for mailProvider %s', req.get('origin'), mailProvider.id); try { const mailLogStatuses = yield mailProvider.webhookForSendMail({ req }); const context = yield (0, context_1.contextFromRequest)(req, opts); for (const mailLogStatus of mailLogStatuses) { const mailLog = yield context.loaders.mailLogsByID.load(mailLogStatus.mailLogID); if (!mailLog) continue; // TODO: handle missing mailLog yield context.prisma.mailLog.update({ where: { id: mailLog.id }, data: { subject: mailLog.subject, mailProviderID: mailLog.mailProviderID, state: mailLogStatus.state, mailData: mailLogStatus.mailData } }); } } catch (error) { (0, api_1.logger)('mailProvider').error(error, 'Error during webhook update in mailProvider %s', mailProvider.id); } })); } return mailProviderWebhookRouter; } exports.setupMailProvider = setupMailProvider; //# sourceMappingURL=mails.js.map