imubot
Version:
A simple helpful bot.
60 lines (50 loc) • 1.68 kB
JavaScript
// Generated by CoffeeScript 1.12.6
(function() {
var Middleware, async;
async = require('async');
Middleware = (function() {
Middleware.ticker = typeof setImmediate === "function" ? setImmediate : process.nextTick;
function Middleware(bot) {
this.bot = bot;
this.stack = [];
}
Middleware.prototype.execute = function(context, next, done) {
var allDone, executeSingleMiddleware;
if (done == null) {
done = function() {};
}
executeSingleMiddleware = (function(_this) {
return function(doneFunc, middlewareFunc, cb) {
var err, nextFunc;
nextFunc = function(newDoneFunc) {
return cb(null, newDoneFunc || doneFunc);
};
try {
return middlewareFunc.call(void 0, context, nextFunc, doneFunc);
} catch (error) {
err = error;
_this.bot.emit('error', err, context.response);
return doneFunc();
}
};
})(this);
allDone = function(_, finalDoneFunc) {
return next(context, finalDoneFunc);
};
return process.nextTick((function(_this) {
return function() {
return async.reduce(_this.stack, done, executeSingleMiddleware, allDone);
};
})(this));
};
Middleware.prototype.register = function(middleware) {
if (middleware.length !== 3) {
throw new Error("Incorrect number of arguments for middleware callback (expected 3, got " + middleware.length + ")");
}
this.stack.push(middleware);
return void 0;
};
return Middleware;
})();
module.exports = Middleware;
}).call(this);