|
|
|
|
|
|
|
var check = require('check-types');
|
|
|
|
|
|
|
|
function sanitize( req, sanitizers, cb ){
|
|
|
|
|
|
|
|
// init an object to store clean
|
|
|
|
// (sanitized) input parameters
|
|
|
|
req.clean = {};
|
|
|
|
|
|
|
|
// init erros and warnings arrays
|
|
|
|
req.errors = [];
|
|
|
|
req.warnings = [];
|
|
|
|
|
|
|
|
// source of input parameters
|
|
|
|
// (in this case from the GET querystring params)
|
|
|
|
var params = req.query || {};
|
|
|
|
|
|
|
|
for (var s in sanitizers) {
|
|
|
|
var sanity = sanitizers[s]( params, req.clean );
|
|
|
|
|
|
|
|
// if errors occurred then set them
|
|
|
|
// on the req object.
|
|
|
|
if( sanity.errors.length ){
|
|
|
|
req.errors = req.errors.concat( sanity.errors );
|
|
|
|
}
|
|
|
|
|
|
|
|
// if warnings occurred then set them
|
|
|
|
// on the req object.
|
|
|
|
if( sanity.warnings.length ){
|
|
|
|
req.warnings = req.warnings.concat( sanity.warnings );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// @todo remove these args, they do not need to be passed out
|
|
|
|
return cb( undefined, req.clean );
|
|
|
|
}
|
|
|
|
|
|
|
|
// export function
|
|
|
|
module.exports = sanitize;
|