1.0.0 • Published 9 years ago

express-verifier v1.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
9 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

9 years ago

0.4.2

9 years ago

0.4.1

9 years ago

0.4.0

9 years ago

0.3.0

9 years ago

0.2.12

9 years ago

0.2.11

9 years ago

0.2.10

9 years ago

0.2.9

9 years ago

0.2.8

9 years ago

0.2.7

9 years ago

0.2.6

9 years ago

0.2.5

9 years ago

0.2.4

9 years ago

0.2.3

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago