126 lines
2.7 KiB
Markdown
126 lines
2.7 KiB
Markdown
|
# MiddlewareHandler
|
||
|
[![Build Status](https://travis-ci.org/nkzawa/middleware-handler.png?branch=master)](https://travis-ci.org/nkzawa/middleware-handler)
|
||
|
|
||
|
MiddlewareHandler manages custom middlewares in the same way as how Express/Connect does.
|
||
|
|
||
|
```js
|
||
|
var MiddlewareHandler = require('middleware-handler');
|
||
|
|
||
|
var handler = new MiddlewareHandler();
|
||
|
handler.use(function(a, b, next) {
|
||
|
console.log(a, b); // foo bar
|
||
|
next();
|
||
|
});
|
||
|
handler.handle(['foo', 'bar']);
|
||
|
```
|
||
|
|
||
|
## Installation
|
||
|
$ npm install middleware-handler
|
||
|
|
||
|
## Example
|
||
|
|
||
|
### Integration with Socket.io
|
||
|
Parsing cookie from handshake's data with the authorization.
|
||
|
|
||
|
```js
|
||
|
var cookieParser = require('express').cookieParser('secret');
|
||
|
var handler = new MiddlewareHandler();
|
||
|
handler.use(function(handshakeData, next) {
|
||
|
// handshakeData has almost the same attributes with request object.
|
||
|
cookieParser(handshakeData, {}, next);
|
||
|
});
|
||
|
|
||
|
var io = require('socket.io').listen(8080);
|
||
|
io.set('authorization', function(handshakeData, callback) {
|
||
|
handler.handle([handshakeData], function(err) {
|
||
|
console.log(handshakeData.cookies);
|
||
|
callback(err, !err);
|
||
|
});
|
||
|
});
|
||
|
```
|
||
|
|
||
|
## Documentation
|
||
|
|
||
|
### #use(middleware)
|
||
|
```middleware``` accepts variable arguments and a callback.
|
||
|
|
||
|
```js
|
||
|
var handler = new MiddlewareHandler();
|
||
|
handler.use(function(arg, next) {
|
||
|
var err;
|
||
|
// do some stuff
|
||
|
next(err); // optionally accepts an error object
|
||
|
});
|
||
|
```
|
||
|
|
||
|
```js
|
||
|
handler.use(function(arg, next) {
|
||
|
next(null, 'foo'); // arguments will be passed to a next middleware
|
||
|
});
|
||
|
handler.use(function(arg, next) {
|
||
|
console.log(arg); // 'foo'
|
||
|
next();
|
||
|
});
|
||
|
```
|
||
|
|
||
|
### #handle([args], [callback])
|
||
|
Invokes middlewares.
|
||
|
|
||
|
```js
|
||
|
var handler = new MiddlewareHandler();
|
||
|
handler.use(function(a, b, next) {
|
||
|
console.log(a, b); // 'foo bar'
|
||
|
next();
|
||
|
});
|
||
|
handler.handle(['foo', 'bar'], function(err) {
|
||
|
// after calling all middlewares
|
||
|
});
|
||
|
```
|
||
|
|
||
|
### #compose([callback])
|
||
|
Creates a function which invokes middlewares.
|
||
|
|
||
|
```js
|
||
|
var handler = new MiddlewareHandler();
|
||
|
handler.use(function(a, b, next) {
|
||
|
console.log(a, b); // 'foo bar'
|
||
|
next();
|
||
|
});
|
||
|
|
||
|
var fn = handler.compose(function(err) {
|
||
|
// after calling all middlewares
|
||
|
});
|
||
|
fn('foo', 'bar');
|
||
|
```
|
||
|
|
||
|
### #clear()
|
||
|
Clear all middlewares from the stack.
|
||
|
|
||
|
```js
|
||
|
var handler = new MiddlewareHandler();
|
||
|
handler.use(function() {});
|
||
|
console.log(handler.stack.length); // 1
|
||
|
|
||
|
handler.clear();
|
||
|
console.log(handler.stack.length); // 0
|
||
|
```
|
||
|
|
||
|
### compose(middlewares...)
|
||
|
Creates a function which invokes the passed middlewares.
|
||
|
|
||
|
```js
|
||
|
function middleware(a, b, next) {
|
||
|
console.log(a, b); // 'foo bar'
|
||
|
next();
|
||
|
}
|
||
|
|
||
|
var fn = MiddlewareHandler.compose(middleware, function(a, b) {
|
||
|
console.log(a, b); // 'foo bar'
|
||
|
});
|
||
|
fn('foo', 'bar');
|
||
|
```
|
||
|
|
||
|
## License
|
||
|
MIT
|
||
|
|