1.0.0 • Published 10 years ago

express-verifier v1.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
10 years ago

npm npm Dependency Status devDependency Status Build Status Coverage Status

express-verifier

Gitter

body, params, query verifier middleware for express framework (nodejs)

all rules see https://www.npmjs.com/package/node-verifier

schema declaration see https://www.npmjs.com/package/node-verifier-schema

var express = require('express');
var bodyParser = require('body-parser');
var verifier = require('express-verifier');

var app = express();

var verify = verifier({
	cwd: __dirname + '/specs/'
});

app.get('/', verify.query(function (required, optional) {
	required('sortby', ['type string', {'contains': ['key', 'value']}]);
	optional('orderby', ['type string', {'contains': ['ASC', 'DESC']}]);
}), function (req, res) {
	res.send({
		done: {
			body: req.body,
			query: req.query,
			params: req.params,
			headers: req.headers
		}
	});
});

app.post('/(:id)/', verify('get-user.yml'), resource);

define verifier by yaml get-user.yml:

---
schema:
    body:
        first_name:
            - type string
            - min_length 3
            - max_length 20
        last_name:
            - type string
            - min_length 3
            - max_length 20
        middle_name?:
            - type string
            - min_length 3
            - max_length 20
    params:
        id:
            - type: string
            - format: ^\d+$
    query:
        orderby?:
            - type: string
            - contains:
                - ASC
                - DESC

verifierConstructor

var verifierConstructor = require('express-verifier');

var verifier = verifierConstructor(options);

options

options.cwd

String - root path of yaml specs

options.preparePath( path )

function - prepare yaml-loader path. must return path string

verifier

Set by schema. Schema must have fields "query", "params", "body", "headers"

var verifierConstructor = require('express-verifier');
var verifier = verifierConstructor();
var Schema = verifierConstructor.Schema;

var schema = Schema().object(function () {
	this.field('params').object(function () {
		this.required('id', [ 'format ^\\d+$' ]);
	});

	this.field('body').object(function (required, optional) {
		required('sortby',  ['type string', {'contains': ['key', 'value']}]);
    	optional('orderby', ['type string', {'contains': ['ASC', 'DESC']}]);
	});
});

app.get('/(:id)/', verifier(schema), function () {
	// ...
});
var verifierConstructor = require('express-verifier');
var verifier = verifierConstructor();
var Schema = verifierConstructor.Schema;

var schemaParams = new Schema().object(function (required) {
	required('id', [ 'format ^\\d+$' ]);
});

var schemaBody = new Schema().object(function (required, optional) {
	required('sortby',  ['type string', {'contains': ['key', 'value']}]);
	optional('orderby', ['type string', {'contains': ['ASC', 'DESC']}]);
});

app.get('/(:id)/', verifier.params(schemaParams), verifier.body(schemaBody), verifier.headers('get-user-headers.yaml'), function () {
	// ...
});

Add new custom rules

see https://github.com/aliaksandr-pasynkau/node-verifier for more information

var Rule = require('express-verifier').Schema.Verifier.Rule;

var HasNotEdgeWhitespaces = Rule.extend({
	check: function (value, params, done) {
		if (typeof value === 'string') {
			return new this.ValidationError('type', 'string');
		}

		return value === value.trim();
	}
});

Rule.add('has_not_edge_whitespaces', HasNotEdgeWhitespaces);
1.0.0

10 years ago

0.4.2

10 years ago

0.4.1

10 years ago

0.4.0

10 years ago

0.3.0

10 years ago

0.2.12

10 years ago

0.2.11

10 years ago

0.2.10

10 years ago

0.2.9

10 years ago

0.2.8

10 years ago

0.2.7

11 years ago

0.2.6

11 years ago

0.2.5

11 years ago

0.2.4

11 years ago

0.2.3

11 years ago

0.2.2

11 years ago

0.2.1

11 years ago