

# cbor body parser 
## A cbor parser for Express

This is a very simple cbor body parser for express by extending the existing npm module 'body-parser'.
It wraps https://github.com/hildjj/node-cbor into a middleware. 

## Installation
```sh
$ npm install cbor-body-parser
```

## Example server side usage: 
```js
let express = require("express");
let bodyParser = require("body-parser");
bodyParser.cbor = require("cbor-body-parser");

let app = express();
app.use(bodyParser.json());
app.use(bodyParser.cbor({limit: "100kB"}));

app.post("/", (req, res) => {
	console.log("Got Payload: " + JSON.stringify(res.body)); 
	res.status(200).json(req.body);
})

app.listen(3000, function () {
	  console.log('Example app listening on port 3000!');
});
```
## Client side test 
```sh
$ gem install cbor-diag
$ echo '{"user":"marry"}' | json2cbor.rb | curl -d @- -H "Content-Type: application/cbor" -X POST http://localhost:3000/
```

## API

```js
	let cborBodyParser = require("cbor-body-parser");
```

### cborBodyParser.cbor([options])

The optional "options" object contains: 

#### limit 
Controls the maximum request body size. If this is a number, then the value
specifies the number of bytes; if it is a string, the value is passed to the
[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
to `'100kb'`.

#### type 
The `type` option is used to determine what media type the middleware will
parse. This option can be a string, array of strings, or a function. If not a
function, `type` option is passed directly to the
[type-is](https://www.npmjs.org/package/type-is#readme) library and this can
be an extension name (like `cbor`), a mime type (like `application/cbor`), or
a mime type with a wildcard (like `*/*` or `*/cbor`). If a function, the `type`
option is called as `fn(req)` and the request is parsed if it returns a truthy
value. Defaults to `application/cbor`.

#### verify 
The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
where `buf` is a `Buffer` of the raw request body and `encoding` is the
encoding of the request. The parsing can be aborted by throwing an error.

## Test
```sh
$ npm run test
```







