Files
eg-api/validators/index.js
2018-09-20 06:46:02 -05:00

36 lines
713 B
JavaScript

const Ajv = require('ajv');
const {customThrow} = require('../helpers');
const parseAndValidateBody = async (schema, body) => {
let parsedBody;
try {
parsedBody = JSON.parse(body);
} catch (err) {
customThrow(400, 'Error. Malformed event.parsedBody.');
}
const validation = validateBody(schema, parsedBody);
if (!validation.isValid) {
customThrow(400, validation.error);
}
return parsedBody;
};
const validateBody = (schema, body) => {
const ajv = new Ajv({$data: true});
const validate = ajv.compile(schema);
const isValid = validate(body);
return {
isValid: isValid,
error: JSON.stringify(validate.errors)
}
};
module.exports = {
parseAndValidateBody,
};