UNPKG

tachi

Version:

Node.js MVC framework for seriously rapid application development.

49 lines (39 loc) 1.64 kB
var CreateRequestDataParser = require('./requestDataParser'); var CreateControllerHandler = require('./controllerHandler'); var staticResourceHandler = require('./staticResourceHandler'); module.exports = (function() { var redirect = function(response, location) { response.writeHead(302, { 'Location': location }); }; var Router = function Router(routeData, classLoader) { var parseRequestData = CreateRequestDataParser(routeData); var getControllerData = CreateControllerHandler(routeData.defaultRoute, routeData.loginUrl, classLoader); return function(request, response) { var deferred = new Deferred(); parseRequestData(request) .onComplete(function(requestData) { if (requestData._isStatic) { staticResourceHandler(request, response) .onComplete(deferred.complete); return; } getControllerData(request, response, requestData) .onComplete(function(output) { if (output._redirect) { redirect(response, output._redirect); } if (output instanceof Deferred) { output.onComplete(deferred.complete); return; } deferred.complete(output); }); }); return deferred; }; }; Router.redirect = redirect; return Router; })();