From 61c7afa63551aa734b679b48c7d8f9c9320a44cb Mon Sep 17 00:00:00 2001 From: coderaiser Date: Mon, 22 Jun 2015 15:32:58 -0400 Subject: [PATCH] feature(cloudcmd) prefix could be function --- HELP.md | 2 +- lib/cloudcmd.js | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/HELP.md b/HELP.md index 1b11d112..ee2aaf24 100644 --- a/HELP.md +++ b/HELP.md @@ -274,7 +274,7 @@ server = http.createServer(app); socket = io.listen(server); app.use(cloudcmd({ - prefix: '/prefix', /* base URL (optional) */ + prefix: '/prefix', /* base URL or function which returns base URL (optional) */ socket: socket, /* used by Config, Edit (optional) and Console (required) */ config: {} /* config data (optional) */ })); diff --git a/lib/cloudcmd.js b/lib/cloudcmd.js index b8c6e145..ad4f6fd0 100644 --- a/lib/cloudcmd.js +++ b/lib/cloudcmd.js @@ -34,12 +34,23 @@ emptyFunc.middle = function() { return emptyFunc; - }, + }; + + function getPrefix(prefix) { + var result; + if (typeof prefix === 'function') + result = prefix(); + else + result = prefix; + + return result; + } + module.exports = function(params) { var p = params || {}, options = p.config || {}, - prefix = p.prefix || '', + prefix = p.prefix, keys = Object.keys(options); keys.forEach(function(name) { @@ -168,9 +179,12 @@ next(); } - function setUrl(prefix) { + function setUrl(pref) { return function(req, res, next) { - var is = !req.url.indexOf(prefix); + var is, prefix; + + prefix = getPrefix(pref); + is = !req.url.indexOf(prefix); if (is) { req.url = req.url.replace(prefix, '') || '/';