diff --git a/libs/middlewares/dimensions.js b/libs/middlewares/dimensions.js index 27d580361f9c39b5e20635f350600740132ed04b..c17e4a6d2e00c1e5dc47455f4959cf9f33a0ad09 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