Loading lib/document_handler.js +28 −6 Original line number Diff line number Diff line Loading @@ -16,34 +16,56 @@ var DocumentHandler = function(options) { DocumentHandler.defaultKeyLength = 10; // Handle retrieving a document DocumentHandler.prototype.handleGet = function(key, response, skipExpire) { DocumentHandler.prototype.handleGet = function(request, response, config) { const key = request.params.id.split('.')[0]; const skipExpire = !!config.documents[key]; this.store.get(key, function(ret) { if (ret) { winston.verbose('retrieved document', { key: key }); response.writeHead(200, { 'content-type': 'application/json' }); if (request.method === 'HEAD') { response.end(); } else { response.end(JSON.stringify({ data: ret, key: key })); } } else { winston.warn('document not found', { key: key }); response.writeHead(404, { 'content-type': 'application/json' }); if (request.method === 'HEAD') { response.end(); } else { response.end(JSON.stringify({ message: 'Document not found.' })); } } }, skipExpire); }; // Handle retrieving the raw version of a document DocumentHandler.prototype.handleRawGet = function(key, response, skipExpire) { DocumentHandler.prototype.handleRawGet = function(request, response, config) { const key = request.params.id.split('.')[0]; const skipExpire = !!config.documents[key]; this.store.get(key, function(ret) { if (ret) { winston.verbose('retrieved raw document', { key: key }); response.writeHead(200, { 'content-type': 'text/plain; charset=UTF-8' }); if (request.method === 'HEAD') { response.end(); } else { response.end(ret); } } else { winston.warn('raw document not found', { key: key }); response.writeHead(404, { 'content-type': 'application/json' }); if (request.method === 'HEAD') { response.end(); } else { response.end(JSON.stringify({ message: 'Document not found.' })); } } }, skipExpire); }; Loading server.js +14 −6 Original line number Diff line number Diff line Loading @@ -109,20 +109,28 @@ if (config.rateLimits) { // first look at API calls app.use(route(function(router) { // get raw documents - support getting with extension router.get('/raw/:id', function(request, response) { var key = request.params.id.split('.')[0]; var skipExpire = !!config.documents[key]; return documentHandler.handleRawGet(key, response, skipExpire); return documentHandler.handleRawGet(request, response, config); }); router.head('/raw/:id', function(request, response) { return documentHandler.handleRawGet(request, response, config); }); // add documents router.post('/documents', function(request, response) { return documentHandler.handlePost(request, response); }); // get documents router.get('/documents/:id', function(request, response) { var key = request.params.id.split('.')[0]; var skipExpire = !!config.documents[key]; return documentHandler.handleGet(key, response, skipExpire); return documentHandler.handleGet(request, response, config); }); router.head('/documents/:id', function(request, response) { return documentHandler.handleGet(request, response, config); }); })); Loading Loading
lib/document_handler.js +28 −6 Original line number Diff line number Diff line Loading @@ -16,34 +16,56 @@ var DocumentHandler = function(options) { DocumentHandler.defaultKeyLength = 10; // Handle retrieving a document DocumentHandler.prototype.handleGet = function(key, response, skipExpire) { DocumentHandler.prototype.handleGet = function(request, response, config) { const key = request.params.id.split('.')[0]; const skipExpire = !!config.documents[key]; this.store.get(key, function(ret) { if (ret) { winston.verbose('retrieved document', { key: key }); response.writeHead(200, { 'content-type': 'application/json' }); if (request.method === 'HEAD') { response.end(); } else { response.end(JSON.stringify({ data: ret, key: key })); } } else { winston.warn('document not found', { key: key }); response.writeHead(404, { 'content-type': 'application/json' }); if (request.method === 'HEAD') { response.end(); } else { response.end(JSON.stringify({ message: 'Document not found.' })); } } }, skipExpire); }; // Handle retrieving the raw version of a document DocumentHandler.prototype.handleRawGet = function(key, response, skipExpire) { DocumentHandler.prototype.handleRawGet = function(request, response, config) { const key = request.params.id.split('.')[0]; const skipExpire = !!config.documents[key]; this.store.get(key, function(ret) { if (ret) { winston.verbose('retrieved raw document', { key: key }); response.writeHead(200, { 'content-type': 'text/plain; charset=UTF-8' }); if (request.method === 'HEAD') { response.end(); } else { response.end(ret); } } else { winston.warn('raw document not found', { key: key }); response.writeHead(404, { 'content-type': 'application/json' }); if (request.method === 'HEAD') { response.end(); } else { response.end(JSON.stringify({ message: 'Document not found.' })); } } }, skipExpire); }; Loading
server.js +14 −6 Original line number Diff line number Diff line Loading @@ -109,20 +109,28 @@ if (config.rateLimits) { // first look at API calls app.use(route(function(router) { // get raw documents - support getting with extension router.get('/raw/:id', function(request, response) { var key = request.params.id.split('.')[0]; var skipExpire = !!config.documents[key]; return documentHandler.handleRawGet(key, response, skipExpire); return documentHandler.handleRawGet(request, response, config); }); router.head('/raw/:id', function(request, response) { return documentHandler.handleRawGet(request, response, config); }); // add documents router.post('/documents', function(request, response) { return documentHandler.handlePost(request, response); }); // get documents router.get('/documents/:id', function(request, response) { var key = request.params.id.split('.')[0]; var skipExpire = !!config.documents[key]; return documentHandler.handleGet(key, response, skipExpire); return documentHandler.handleGet(request, response, config); }); router.head('/documents/:id', function(request, response) { return documentHandler.handleGet(request, response, config); }); })); Loading