diff --git a/app/util/verifyBody.js b/app/util/verifyBody.js new file mode 100644 index 0000000..236c029 --- /dev/null +++ b/app/util/verifyBody.js @@ -0,0 +1,23 @@ + +// Verifies the request body is well formed +// expectedProps follows the format: +// [{name: 'myList', instance: 'Array'}, {name: 'myVar', type: 'string', optional: true}, etc.] +const verifyBody = expectedProps => + (req, res, next) => { + for (let i = 0; i < expectedProps.length; i++) { + const expected = expectedProps[i]; + const prop = req.body[expected.name]; + + if (!expected.optional && !prop) + return res.status(400).json({message: expected.name + ' not specified.'}); + + if (expected.type && typeof prop !== expected.type) + return res.status(400).json({message: expected.name + ' malformed.'}); + + if (expected.instance && !(prop instanceof expected.instance)) + return res.status(400).json({message: expected.name + ' malformed.'}); + } + next(); + }; + +module.exports = verifyBody; \ No newline at end of file