Loading lib/document_handler.js +43 −17 Original line number Diff line number Diff line var winston = require('winston'); var Busboy = require('busboy'); // For handling serving stored documents Loading Loading @@ -51,11 +52,11 @@ DocumentHandler.prototype.handlePost = function(request, response) { var _this = this; var buffer = ''; var cancelled = false; request.on('data', function(data) { if (!buffer) { response.writeHead(200, { 'content-type': 'application/json' }); } buffer += data.toString(); // What to do when done var onSuccess = function () { // Check length console.log(buffer); if (_this.maxLength && buffer.length > _this.maxLength) { cancelled = true; winston.warn('document >maxLength', { maxLength: _this.maxLength }); Loading @@ -63,14 +64,14 @@ DocumentHandler.prototype.handlePost = function(request, response) { response.end( JSON.stringify({ message: 'Document exceeds maximum length.' }) ); return; } }); request.on('end', function(end) { if (cancelled) return; // And then save if we should _this.chooseKey(function (key) { _this.store.set(key, buffer, function (res) { if (res) { winston.verbose('added document', { key: key }); response.writeHead(200, { 'content-type': 'application/json' }); response.end(JSON.stringify({ key: key })); } else { Loading @@ -80,12 +81,37 @@ 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) { if (fieldname === 'data') { buffer = val; } }); busboy.on('finish', function () { onSuccess(); }); request.pipe(busboy); // Otherwise, use our own and just grab flat data from POST body } else { request.on('data', function (data) { buffer += data.toString(); }); request.on('end', function () { if (cancelled) { return; } onSuccess(); }); request.on('error', function (error) { winston.error('connection error: ' + error.message); response.writeHead(500, { 'content-type': 'application/json' }); response.end(JSON.stringify({ message: 'Connection error.' })); cancelled = true; }); } }; // Keep choosing keys until one isn't taken Loading package.json +2 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,8 @@ "connect": "1.9.2", "redis-url": "0.1.0", "redis": "0.8.1", "uglify-js": "1.3.3" "uglify-js": "1.3.3", "busboy": "0.2.4" }, "devDependencies": { "mocha": "*", Loading Loading
lib/document_handler.js +43 −17 Original line number Diff line number Diff line var winston = require('winston'); var Busboy = require('busboy'); // For handling serving stored documents Loading Loading @@ -51,11 +52,11 @@ DocumentHandler.prototype.handlePost = function(request, response) { var _this = this; var buffer = ''; var cancelled = false; request.on('data', function(data) { if (!buffer) { response.writeHead(200, { 'content-type': 'application/json' }); } buffer += data.toString(); // What to do when done var onSuccess = function () { // Check length console.log(buffer); if (_this.maxLength && buffer.length > _this.maxLength) { cancelled = true; winston.warn('document >maxLength', { maxLength: _this.maxLength }); Loading @@ -63,14 +64,14 @@ DocumentHandler.prototype.handlePost = function(request, response) { response.end( JSON.stringify({ message: 'Document exceeds maximum length.' }) ); return; } }); request.on('end', function(end) { if (cancelled) return; // And then save if we should _this.chooseKey(function (key) { _this.store.set(key, buffer, function (res) { if (res) { winston.verbose('added document', { key: key }); response.writeHead(200, { 'content-type': 'application/json' }); response.end(JSON.stringify({ key: key })); } else { Loading @@ -80,12 +81,37 @@ 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) { if (fieldname === 'data') { buffer = val; } }); busboy.on('finish', function () { onSuccess(); }); request.pipe(busboy); // Otherwise, use our own and just grab flat data from POST body } else { request.on('data', function (data) { buffer += data.toString(); }); request.on('end', function () { if (cancelled) { return; } onSuccess(); }); request.on('error', function (error) { winston.error('connection error: ' + error.message); response.writeHead(500, { 'content-type': 'application/json' }); response.end(JSON.stringify({ message: 'Connection error.' })); cancelled = true; }); } }; // Keep choosing keys until one isn't taken Loading
package.json +2 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,8 @@ "connect": "1.9.2", "redis-url": "0.1.0", "redis": "0.8.1", "uglify-js": "1.3.3" "uglify-js": "1.3.3", "busboy": "0.2.4" }, "devDependencies": { "mocha": "*", Loading