UNPKG

isvalid

Version:

Async JSON validation library for node.js.

96 lines (78 loc) 1.77 kB
// // middleware.js // // Created by Kristian Trenskow on 2015-06-28 // // See license in LICENSE // import formalize from './formalize.js'; import isvalid from './validate.js'; import merge from '@trenskow/merge'; export function body(schema, options) { let formalizedSchema = formalize(schema, options); return function(req, res, next) { return isvalid(req.body, formalizedSchema, merge(options, { req: req, res: res }), ['body']) .then((body) => { req.body = body; next(); }) .catch((err) => { req.body = undefined; next(err); }); }; } export function query(schema, options) { let formalizedSchema = formalize(schema, options); return function(req, res, next) { return isvalid(req.query, formalizedSchema, merge(options, { req: req, res: res }), ['query']) .then((query) => { req.validatedQuery = query; next(); }) .catch((err) => { req.validatedQuery = undefined; next(err); }); }; } export function param(schema, options) { let formalizedSchema = formalize(schema, options); return function(req, res, next, val, id) { return isvalid(req.params[id], formalizedSchema, merge(options, { req: req, res: res })) .then((param) => { req.params[id] = param; next(); }) .catch((err) => { req.params[id] = undefined; next(err); }); }; } export function parameter(id, schema, options) { let formalizedSchema = formalize(schema, options); return function(req, res, next) { return isvalid(req.params[id], formalizedSchema, merge(options, { req: req, res: res }), ['params', id]) .then((param) => { req.params[id] = param; next(); }) .catch((err) => { delete req.params.id; next(err); }); }; }