UNPKG

@incdevco/framework

Version:
92 lines (51 loc) 1.64 kB
var Util = require('util'); var Base = require('../index'); var MailParser = require('../../mail-parser'); function Lambda(config) { 'use strict'; Base.call(this, config); this.handlers = config.handlers || {}; this.parser = new MailParser(config.parser); } Util.inherits(Lambda, Base); Lambda.prototype.handleEmail = function (message, content) { 'use strict'; var promise = this.Promise.resolve(true), self = this; message.mail.destination.forEach(function (destination) { if (self.handlers[destination]) { promise = promise.then(function () { return self.handlers[destination](message, content); }); } }); return promise; }; Lambda.prototype.handler = function (event, context) { 'use strict'; var promise = this.Promise.resolve(true), self = this; this.log('original-event', JSON.stringify(event, null, 2)); event.Records.forEach(function (record) { promise = promise.then(function () { var message = JSON.parse(record.Sns.Message); return self.parser.parse(message.content) .then(function (content) { return self.handleEmail(message, content); }); }); }); promise .then(function (result) { context.succeed(result); }) .catch(function (exception) { context.fail(exception); }); }; Lambda.prototype.register = function (emailAddress, handler) { 'use strict'; this.handlers[emailAddress] = handler; return this; }; module.exports = Lambda;