forked from spacebar/SplatNet-Backend
41 lines
No EOL
1.1 KiB
JavaScript
41 lines
No EOL
1.1 KiB
JavaScript
const titles = require('../titles');
|
|
|
|
function validateMultipartMiddleware(request, response, next) {
|
|
const title = titles[request.titleCode];
|
|
|
|
if (!title || !title.multipart_validator) {
|
|
return next();
|
|
}
|
|
|
|
const multipartValidator = title.multipart_validator;
|
|
const validationSchema = title.validation_schema;
|
|
|
|
multipartValidator(request.copy, response, error => {
|
|
if (error) {
|
|
return next(error);
|
|
}
|
|
|
|
const resultData = {
|
|
...request.copy.body,
|
|
};
|
|
|
|
if (Array.isArray(request.copy.files)) {
|
|
for (const file of request.copy.files) {
|
|
resultData[file.fieldname] = file.buffer;
|
|
}
|
|
}
|
|
|
|
const validationResult = validationSchema.validate(resultData);
|
|
|
|
if (validationResult.error) {
|
|
console.error('[Validation Error]', validationResult.error.details);
|
|
return next(validationResult.error);
|
|
}
|
|
|
|
request.resultData = validationResult.value;
|
|
|
|
next();
|
|
});
|
|
}
|
|
|
|
module.exports = validateMultipartMiddleware; |