diff --git a/lib/document_handler.js b/lib/document_handler.js index 83eb141..b4ac8d1 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,20 @@ 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.' })); + return; + } + } + // And then save if we should _this.chooseKey(function (key) { _this.store.set(key, buffer, function (res) { @@ -83,7 +98,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) { diff --git a/static/application.js b/static/application.js index d936cd9..4390061 100644 --- a/static/application.js +++ b/static/application.js @@ -64,7 +64,7 @@ haste_document.prototype.save = function(data, callback) { type: 'post', data: data, dataType: 'json', - contentType: 'application/json; charset=utf-8', + contentType: 'text/plain; charset=utf-8', success: function(res) { _this.locked = true; _this.key = res.key;