apeman-app-rest
Version:
apeman app to handle restful endpoint.
67 lines (59 loc) • 1.63 kB
JavaScript
/**
* @function validateDataVr
* @returns {?Object} - Error if failed
*/
const apemanerror = require('apemanerror')
const ApErrorCodes = apemanerror.ApErrorCodes
/** @lends validateDataVr */
function validateDataVr (data, vr) {
if (!data) {
return null
}
let attributes = data.attributes
if (!attributes.hasOwnProperty('vr')) {
return null
}
if (isNaN(Number(attributes.vr))) {
return validateDataVr.versionError(attributes.vr, '/data/attributes/vr', attributes.vr)
}
let conflict = Number(attributes.vr) < Number(vr)
if (conflict) {
return validateDataVr.conflictError('/data/attributes/vr', attributes.vr, vr)
} else {
return null
}
}
Object.assign(validateDataVr, {
bulk (data, vrs) {
let errors = data.map((data, i) =>
validateDataVr(data, vrs[ i ])
).map((error, i) =>
error ? Object.assign(error, {
source: { pointer: `/data/${i}/attributes/vr` }
}) : null
).filter((error) => !!error)
return errors.length > 0 ? errors : null
},
versionError (pointer, given) {
let code = ApErrorCodes.RESOURCE_VR_TYPE_ERROR
return Object.assign(
apemanerror.newError(code, pointer, {
trigger: 'RestHandler',
scope: { given, cause: 'isNaN' }
}),
{ status: '409' }
)
},
conflictError (pointer, given, should) {
let code = ApErrorCodes.RESOURCE_DATA_CONFLICT_ERROR
return Object.assign(
apemanerror.newError(code, pointer, {
trigger: 'RestHandler',
scope: { given, should }
}),
{ status: '409' }
)
}
})
module.exports = validateDataVr