|
|
|
@ -5,11 +5,11 @@ var yaps_plugin = require("./plugin.js"); |
|
|
|
|
|
|
|
var handler_chain = function(handlers, request, server, response, not_found){ |
|
|
|
if(handlers.length){ |
|
|
|
handlers[0](request, server, function(status, body, headers){ |
|
|
|
handlers[0](request, server, function(status, body){ |
|
|
|
if(status === null || status === undefined){ |
|
|
|
handler_chain(handlers.slice(1), request, server, response, not_found); |
|
|
|
} else{ |
|
|
|
response.writeHead(status, headers); |
|
|
|
response.writeHead(status, request.response_headers); |
|
|
|
response.end(body); |
|
|
|
} |
|
|
|
}); |
|
|
|
@ -18,6 +18,14 @@ var handler_chain = function(handlers, request, server, response, not_found){ |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var setup_request = function(request, server){ |
|
|
|
request.response_headers = []; |
|
|
|
request.addHeader = function(name, value){ |
|
|
|
request.response_headers.push([name, value]); |
|
|
|
}; |
|
|
|
return request; |
|
|
|
}; |
|
|
|
|
|
|
|
var server = function(settings, http_server){ |
|
|
|
this.settings = settings || {}; |
|
|
|
this.bind = this.settings.bind || "0.0.0.0:8000"; |
|
|
|
@ -36,6 +44,7 @@ var server = function(settings, http_server){ |
|
|
|
}; |
|
|
|
|
|
|
|
server.prototype.rootHandler = function(request, response){ |
|
|
|
request = setup_request(request); |
|
|
|
var self = this.yaps; |
|
|
|
var handlers = []; |
|
|
|
var method = request.method.toUpperCase(); |
|
|
|
@ -54,13 +63,13 @@ server.prototype.rootHandler = function(request, response){ |
|
|
|
if(handlers.length){ |
|
|
|
handler_chain(handlers, request, self, response, function(){ |
|
|
|
handler_chain(self.notFound, request, self, response, function(){ |
|
|
|
response.writeHead(404); |
|
|
|
response.writeHead(404, request.response_headers); |
|
|
|
response.end("Not Found"); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else{ |
|
|
|
handler_chain(self.notFound, request, self, response, function(){ |
|
|
|
response.writeHead(404); |
|
|
|
response.writeHead(404, request.response_headers); |
|
|
|
response.end("Not Found"); |
|
|
|
}); |
|
|
|
} |
|
|
|
|