UNPKG

apeman-app-rest

Version:
66 lines (58 loc) 1.53 kB
/** * @function validateDataType * @returns {?Object} - Error if failed */ 'use strict' const apemanerror = require('apemanerror') const ApErrorCodes = apemanerror.ApErrorCodes const trigger = 'RestHandler' /** @lends validateDataType */ function validateDataType (data, type) { type = [].concat(type || []) if (!data) { return null } if (!data.type) { return validateDataType.missingError('/data/type', type) } let valid = !!~type.indexOf(data.type) if (valid) { return null } else { return validateDataType.invalidError('/data/type', data.type, type) } } Object.assign(validateDataType, { bulk (data, type) { type = [].concat(type || []) let errors = data.map((data, i) => validateDataType(data, type) ).map((error, i) => error ? Object.assign(error, { source: { pointer: `data/${i}/type` } }) : null ).filter((error) => !!error) return errors.length > 0 ? errors : null }, missingError (pointer, available) { let code = ApErrorCodes.RESOURCE_TYPE_MISSING_ERROR return Object.assign( apemanerror.newError(code, pointer, { trigger, scope: { available } }), { status: '400' } ) }, invalidError (pointer, given, allowed) { let code = ApErrorCodes.RESOURCE_TYPE_INVALID_ERROR return Object.assign( apemanerror.newError(code, pointer, { trigger, scope: { given, allowed } }), { status: '400' } ) } }) module.exports = validateDataType