From 28f283a0b90e093ac34552071c89354aa512bec0 Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Sat, 31 Aug 2013 20:20:18 -0400 Subject: [PATCH] initial commit --- .gitignore | 1 + README.md | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ index.js | 30 +++++++++++++++++++++++++++++ package.json | 25 +++++++++++++++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.js create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/README.md b/README.md new file mode 100644 index 0000000..1d8c2ba --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +# YAPS Body Parser +A body parsing plugin for [YAPS](https://github.com/brettlangdon/yaps.git). + +## Install +### Via NPM +```bash +npm install [-g] yaps-body +``` +### Via Git +```bash +git clone git://github.com/brettlangdon/yaps-body.git +cd ./yaps-body +npm install +`` + +## Usage +```javascript +var yaps = require("yaps"); + +var yaps_body = require("yaps-body"); + +var app = new yaps.server(); +app.registerPlugin(yaps_body); + +var my_plugin = function(options){ + this.POST("/", function(request, server, respond){ + // the request body as a buffer + console.dir(request.body); + // any errors raised while reading the POST data + console.dir(request.bodyError); + respond(200, ""); + }); +}; + +app.registerPlugin(my_plugin); +app.start(); +``` + +## Settings +```javascript +var yaps = require("yaps"); + +var yaps_body = require("yaps-body"); + +var app = new yaps.server({ + // attempt to parse the body as JSON, default: false + // this means request.body will be an obj and NOT a buffer + bodyAsJSON: true, +}); +app.registerPlugin(yaps_body); + +app.start(); +``` diff --git a/index.js b/index.js new file mode 100644 index 0000000..c1cc1e4 --- /dev/null +++ b/index.js @@ -0,0 +1,30 @@ +var body = function(options){ + this.settings = options || {}; + this.settings.bodyAsJSON = this.settings.bodyAsJSON || false; + this.on("setup", function(request, server, done){ + var self = this; + request.body = new Buffer(0); + request.on("data", function(chunk){ + request.body = Buffer.concat([request.body, chunk]); + }); + request.on("end", function(){ + if(self.settings.bodyAsJSON){ + try{ + request.body = JSON.parse(request.body); + }catch(e){ + request.body = undefined; + request.bodyError = e.toString(); + } + } + done(); + }); + + request.on("error", function(error){ + request.body = undefined; + request.bodyError = error; + done(); + }); + }); +}; + +module.exports = body; diff --git a/package.json b/package.json new file mode 100644 index 0000000..48d3adf --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "author": "Brett Langdon (http://brett.is)", + "bugs": { + "url": "https://github.com/brettlangdon/yaps-body/issues" + }, + "description": "Body parser plugin for YAPS", + "keywords": [ + "body", + "parser", + "http", + "server", + "yaps" + ], + "license": "MIT", + "main": "index.js", + "name": "yaps-body", + "repository": { + "type": "git", + "url": "git://github.com/brettlangdon/yaps-body.git" + }, + "scripts": { + "test": "make test" + }, + "version": "0.1.0" +}