@wepublish/api
Version:
API core for we.publish.
43 lines • 2.09 kB
JavaScript
;
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