Comparing version 0.4.6 to 0.4.8
67
index.js
var http = require('http'); | ||
var https = require('https'); | ||
var common = require('common'); | ||
var matcher = require('./matcher'); | ||
@@ -15,2 +14,3 @@ | ||
} | ||
return require('fs').readFileSync(param); | ||
@@ -21,7 +21,5 @@ }; | ||
var that = common.createEmitter(); | ||
options = options || {}; | ||
// TODO: maybe listen for # of request handlers on the server to decide whether to autoclose | ||
if (options.router) { | ||
@@ -50,5 +48,35 @@ return options.router; | ||
} | ||
return false; | ||
}; | ||
var onrequest = function(request, response) { | ||
that.emit('request', request, response); | ||
that.route(request, response); | ||
}; | ||
var onupgrade = function(request, connection, head) { | ||
that.emit('upgrade', request, connection, head); | ||
if (find(methods.upgrade, request, connection, head)) { | ||
return; | ||
} | ||
if (that.listeners('upgrade').length || server.listeners('upgrade').length > 1) { | ||
return; | ||
} | ||
connection.destroy(); | ||
}; | ||
that.from = function(server, options) { | ||
if (options && typeof options === 'object' && typeof server === 'number') { | ||
return that.from(https.createServer(options).listen(server)); | ||
} | ||
if (typeof server === 'number' || typeof server === 'string') { | ||
return that.from(http.createServer().listen(server)); | ||
} | ||
server.on('request', onrequest); | ||
server.on('upgrade', onupgrade); | ||
return that; | ||
}; | ||
that.route = function(request, response) { | ||
@@ -65,22 +93,7 @@ if (find(methods[request.method.toLowerCase()], request, response) || !that.autoclose) { | ||
} | ||
response.writeHead(404); | ||
response.end(); | ||
}; | ||
server.on('request', function(request, response) { | ||
that.emit('request', request, response); | ||
that.route(request, response); | ||
}); | ||
server.on('upgrade', function(request, connection, head) { | ||
that.emit('upgrade', request, connection, head); | ||
if (find(methods.upgrade, request, connection, head)) { | ||
return; | ||
} | ||
if (that.listeners('upgrade').length || server.listeners('upgrade').length > 1) { | ||
return; | ||
} | ||
connection.destroy(); | ||
}); | ||
var router = function(methods) { | ||
@@ -114,2 +127,3 @@ return function(pattern, rewrite, fn) { | ||
} | ||
return false; | ||
@@ -121,3 +135,3 @@ }); | ||
var fns = ['get', 'put', 'del', 'post', 'head', 'options']; | ||
fns.forEach(function(method) { | ||
@@ -127,2 +141,4 @@ that[method] = router(methods[method.replace('del', 'delete')]); | ||
that.upgrade = router(methods.upgrade); | ||
that.all = function() { | ||
@@ -134,6 +150,3 @@ var args = arguments; | ||
}); | ||
}; | ||
that.upgrade = router(methods.upgrade); | ||
}; | ||
that.close = function() { | ||
@@ -152,5 +165,5 @@ server.close.apply(server, arguments); | ||
return that; | ||
return that.from(server); | ||
}; | ||
exports.create = createRouter; |
{ | ||
"name":"router", | ||
"version":"0.4.6", | ||
"version":"0.4.8", | ||
"description":"A lean and mean web router", | ||
@@ -5,0 +5,0 @@ "contributors": [ |
7818
176