From 1aff82242a5a917a3fb57c3228f0de1b330c42dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Nu=C3=B1ez?= Date: Mon, 29 Jan 2018 21:28:50 -0300 Subject: [PATCH] Add support for JSON POST Add support for JSON POST --- lib/document_handler.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/document_handler.js b/lib/document_handler.js index 68985ec..376aeb1 100644 --- a/lib/document_handler.js +++ b/lib/document_handler.js @@ -52,6 +52,7 @@ DocumentHandler.prototype.handlePost = function (request, response) { var _this = this; var buffer = ''; var cancelled = false; + var ct = request.headers['content-type']; // What to do when done var onSuccess = function () { @@ -65,6 +66,19 @@ DocumentHandler.prototype.handlePost = function (request, response) { ); return; } + + //added support for json data + if (ct && ct.split(';')[0] === 'application/json') { + try { + let json = JSON.parse(buffer); + buffer = json.data; + } catch(e) { + winston.verbose('error adding document'); + response.writeHead(500, { 'content-type': 'application/json' }); + response.end(JSON.stringify({ message: 'invalid JSON received.' })); + } + } + // And then save if we should _this.chooseKey(function (key) { _this.store.set(key, buffer, function (res) { @@ -83,7 +97,6 @@ DocumentHandler.prototype.handlePost = function (request, response) { }; // If we should, parse a form to grab the data - var ct = request.headers['content-type']; if (ct && ct.split(';')[0] === 'multipart/form-data') { var busboy = new Busboy({ headers: request.headers }); busboy.on('field', function (fieldname, val) {