From b7269e65cc7c26e8af5303adb2435e1c63a9edff Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Wed, 31 Aug 2016 11:48:56 -0300 Subject: [PATCH] Add value detection in dimensions --- libs/middlewares/dimensions.js | 59 ++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/libs/middlewares/dimensions.js b/libs/middlewares/dimensions.js index 27d58036..c17e4a6d 100644 --- a/libs/middlewares/dimensions.js +++ b/libs/middlewares/dimensions.js @@ -1,39 +1,48 @@ /** - * Dimensions middleware - * - * EXAMPLE: - * Use it with no parameters to get all the dimensions specified - * app.get('/', dimensions(), function(req, res, next){}) - * - * Use it with an array of accepted values - * app.get('/', dimensions(['year', 'location']), function(req, res, next){}) - * - * Use it globally - * app.use(dimensions()) - */ +* Dimensions middleware +* +* EXAMPLE: +* Use it with no parameters to get all the dimensions specified +* app.get('/', dimensions(), function(req, res, next){}) +* +* Use it with an array of accepted values +* app.get('/', dimensions(['year', 'location']), function(req, res, next){}) +* +* Use it globally +* app.use(dimensions()) +*/ function intersect(a, b) { var t if (b.length > a.length) t = b, b = a, a = t return a.filter(function (e) { - if (b.indexOf(e) !== -1) return true + if (b.indexOf(e) !== -1) return true }) } function dimensions(dims) { - return function(req, res, next) { - if(req.query.dims) { - params = req.query.dims.split(",") - // If the dims array exists and is not empty - if(typeof dims !== 'undefined' && dims.length > 0) { - req.dims = intersect(dims, params) - } else { - req.dims = params - } + return function(req, res, next) { + req.dims = {} + if(req.query.dims) { + var params = req.query.dims.split(",") + var dimObj = {} + for(var i=0; i<params.length; ++i) { + var kv = params[i].split(":") + dimObj[kv[0]] = (typeof kv[1] === 'undefined') ? null : kv[1] + } + // If the dims array exists and is not empty + if(typeof dims !== 'undefined' && dims.length > 0) { + var intersection = intersect(dims, Object.keys(dimObj)) + for(var i=0; i<intersection.length; ++i) { + req.dims[intersection[i]] = dimObj[intersection[i]] + } + } else { + req.dims = dimObj + } + } + console.log(req.dims) + next() } - console.log(req.dims) - next() - } } module.exports = dimensions -- GitLab