From 82b9a6b56b0946ca83cf09a1b01558bd06980775 Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Thu, 24 Mar 2016 23:50:10 +0300 Subject: [PATCH] + ejson middleware --- package.json | 1 + src/middlewares/ejson.js | 15 +++++++++++++++ src/server.js | 6 +++++- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/middlewares/ejson.js diff --git a/package.json b/package.json index 7ad7c69e..1d83037c 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "babel-preset-es2015": "^6.5.0", "babel-preset-stage-0": "^6.5.0", "co": "^4.4.0", + "ejson": "^2.1.2", "instagram-node": "^0.5.1", "koa": "^2.0.0-alpha.3", "koa-bodyparser": "^3.0.0", diff --git a/src/middlewares/ejson.js b/src/middlewares/ejson.js new file mode 100644 index 00000000..3f233ad4 --- /dev/null +++ b/src/middlewares/ejson.js @@ -0,0 +1,15 @@ +import {parse} from 'ejson'; + +export function ejson() { + return async (ctx, next) => { + let type = ctx.request.headers['content-type']; + let data = ctx.request.body; + + if (type === 'application/ejson'){ + data = typeof data === 'string' ? data : JSON.stringify(data); + ctx.request.body = parse(data); + } + + await next(); + }; +} diff --git a/src/server.js b/src/server.js index bca8eb58..adc5d819 100644 --- a/src/server.js +++ b/src/server.js @@ -25,7 +25,11 @@ export default function(){ const app = new Koa(); app.proxy = true; - app.use(bodyParser()); + app.use(bodyParser({ + extendTypes: { + json: 'application/ejson' + } + })); app.use($(logger())); app.use(api()); app.use($(conditional()));