From 5f3de0876fd33f77df0eb3ccccd1f964e3a811bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samy=20Pess=C3=A9?= Date: Fri, 27 May 2016 12:01:28 +0200 Subject: [PATCH] Add header 'X-Current-Location' to serve and fix handling of directories --- lib/cli/server.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/cli/server.js b/lib/cli/server.js index 555bbb7e9..752f8678f 100644 --- a/lib/cli/server.js +++ b/lib/cli/server.js @@ -71,11 +71,18 @@ Server.prototype.start = function(dir, port) { // Redirect to directory's index.html function redirect() { + var resultURL = urlTransform(req.url, function(parsed) { + parsed.pathname += '/'; + return parsed; + }); + res.statusCode = 301; - res.setHeader('Location', req.url + '/'); - res.end('Redirecting to ' + req.url + '/'); + res.setHeader('Location', resultURL); + res.end('Redirecting to ' + resultURL); } + res.setHeader('X-Current-Location', req.url); + // Send file send(req, url.parse(req.url).pathname, { root: dir @@ -106,4 +113,16 @@ Server.prototype.start = function(dir, port) { }); }; +/** + urlTransform is a helper function that allows a function to transform + a url string in it's parsed form and returns the new url as a string + + @param {String} uri + @param {Function} fn + @return {String} +*/ +function urlTransform(uri, fn) { + return url.format(fn(url.parse(uri))); +} + module.exports = Server;