shunter
Version:
A Node.js application built to read JSON and translate it into HTML
39 lines (31 loc) • 897 B
JavaScript
;
var qs = require('qs');
module.exports = function(config, req, res, data, next) {
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
var cast = function(params) {
var output = {};
params = params || {};
var transform = function(value) {
var val = (typeof value === 'string') ? value.toLowerCase() : value;
if (val === 'true' || val === 'false') {
return val === 'true';
}
if (/^\d+(\.\d+)?$/.test(val)) {
return parseInt(val, 10);
}
return value;
};
Object.keys(params).forEach(function(key) {
if (Array.isArray(params[key])) {
output[key] = params[key].map(transform);
} else {
output[key] = transform(params[key]);
}
});
return output;
};
data.query_data = cast(req.query);
data.query_string = qs.stringify(data.query_data);
data.request_url = (req.url) ? req.url.replace(/\?.*$/, '') : '';
next(data);
};