@incdevco/framework
Version:
node.js lambda framework
63 lines (31 loc) • 1.12 kB
JavaScript
var Promise = require('bluebird');
function Consumer(config) {
config = config || {};
this.handlers = config.handlers || {};
}
Consumer.prototype.consume = function (action, index, deleteMessageFn) {
var self = this;
return Promise.try(function () {
var parts = action.name.split(':');
var group = parts[0];
var name = self.normalizeActionName(parts[1]);
if (!self.handlers[group]) {
throw new Error('Group Is Unknown: ' + group);
}
if (typeof self.handlers[group][name] !== 'function') {
throw new Error('Handler Is Not Function: ' + group + '.' + name);
}
return self.handlers[group][name](action, index, deleteMessageFn);
});
};
Consumer.prototype.normalizeActionName = function (input) {
var normalized = '';
input.split('-').forEach(function (part, index) {
if (index > 0) {
part = part.charAt(0).toUpperCase() + part.substr(1);
}
normalized += part;
});
return normalized;
};
module.exports = Consumer;