UNPKG

@incdevco/framework

Version:
100 lines (51 loc) 1.69 kB
var Util = require('util'); var Promise = require('bluebird'); var Base = require('../index'); function Lambda(config) { config = config || {}; Base.call(this, config); this.handlers = config.handlers || {}; } Util.inherits(Lambda, Base); Lambda.prototype.handler = function (event, context, callback) { var count = 0, promise = Promise.resolve(true), self = this; this.log('original-event', JSON.stringify(event, null, 2)); event.Records.forEach(function (record, index) { promise = promise.then(function () { count++; return self.handleRecord(event, context, record) .catch(function (exception) { exception.recordIndex = index; throw exception; }); }); }); promise .then(function () { callback(null, count); }) .catch(function (exception) { callback(exception); }); }; Lambda.prototype.handleRecord = function (event, context, record) { var self = this; return Promise.try(function () { var action; try { action = JSON.parse(record.Sns.Message); } catch (e) { self.log('not valid action message', record.Sns.Message); return false; } action.id = record.Sns.MessageId; if (self.handlers[action.name]) { self.log('handler found', action.name); return self.handlers[action.name](event, context, action); } else { self.log('no handler found', action.name); } return false; }); }; module.exports = Lambda;