apeman-app-validate
Version:
apeman app to do schema validation.
49 lines (47 loc) • 1.1 kB
JavaScript
/**
* Parse data in request body.
* @function parseData
* @param {string[]} namespace
* @returns {?Object} - Found data
*/
/** @lends parseData */
function parseData (body, namespace) {
let data = body
let getValue = (data, key) => {
if (!data) {
return data
}
let value = data[ key ]
if (Array.isArray(value)) {
return value.map((value, i) =>
Object.assign({
__proto__: {
$pointer: [ (data.$pointer || ''), key, i ].join('/')
}
}, value)
)
} else if (typeof value === 'object') {
value = Object.assign({
__proto__: {
$pointer: [ (data.$pointer || ''), key ].join('/')
}
}, value)
}
return value
}
if (namespace) {
let keys = namespace.split(/[\.\/]/g).filter((key) => !!key)
for (let key of keys) {
if (data) {
if (Array.isArray(data)) {
data = data.map((data) => getValue(data, key))
} else {
data = getValue(data, key)
}
}
}
}
return data
}
module.exports = parseData