router
Advanced tools
Comparing version 0.2.6 to 0.2.8
67
index.js
@@ -5,2 +5,6 @@ var common = require('common'); | ||
var fs = require('fs'); | ||
var path = require('path'); | ||
var mimes = require('mimes'); | ||
var matcher = require('./matcher'); | ||
@@ -112,4 +116,24 @@ | ||
that.file = function(pattern, base) { | ||
that.get(pattern, exports.onfilerequest(base || '.')); | ||
that.file = function(pattern, rewrite) { | ||
that.get(pattern, rewrite, function(request, response) { | ||
var url = path.normalize(request.url.split('?')[0]); | ||
if (/\/\.\.\//.test(url)) { // security check | ||
response.writeHead(404); | ||
response.end(); | ||
return; | ||
} | ||
fs.readFile(url, function(err, buffer) { | ||
if (err) { | ||
response.writeHead(404); | ||
response.end(); | ||
return; | ||
} | ||
response.writeHead(200, { | ||
'content-type':mimes.resolve(url) | ||
}); | ||
response.end(buffer); | ||
}); | ||
}); | ||
}; | ||
@@ -127,39 +151,2 @@ | ||
exports.create = createRouter; | ||
var fs = require('fs'); | ||
var path = require('path'); | ||
var mimes = require('mimes'); | ||
exports.onfilerequest = function(dir, options) { | ||
options = options || {}; | ||
// TODO: add cache option | ||
return function(request, response) { | ||
var url = request.url.split('?')[0]; | ||
url = (request.matches && request.matches.path) || path.normalize(url); | ||
// security check | ||
if (/\/\.\.\//.test(url)) { | ||
response.writeHead(404); | ||
response.end(); | ||
return; | ||
} | ||
url = path.join(dir, url); | ||
fs.readFile(url, function(err, buffer) { | ||
if (err) { | ||
response.writeHead(404); | ||
response.end(); | ||
return; | ||
} | ||
response.writeHead(options.status || 200, { | ||
'content-type':mimes.resolve(url) | ||
}); | ||
response.end(buffer); | ||
}); | ||
}; | ||
}; | ||
exports.create = createRouter; |
{ | ||
"name":"router", | ||
"version":"0.2.6", | ||
"version":"0.2.8", | ||
"description":"A lean and mean web router", | ||
@@ -5,0 +5,0 @@ "contributors": [ |
29292
180