1
0
Fork 0
mirror of https://github.com/seejohnrun/haste-server.git synced 2024-11-22 20:51:21 +00:00

Added jsonp support

Closes #47
This commit is contained in:
John Crepezzi 2013-12-04 12:13:17 -05:00
parent 7a08960414
commit 467f9a53b2
2 changed files with 16 additions and 3 deletions

View file

@ -15,12 +15,23 @@ var DocumentHandler = function(options) {
DocumentHandler.defaultKeyLength = 10; DocumentHandler.defaultKeyLength = 10;
// Handle retrieving a document // Handle retrieving a document
DocumentHandler.prototype.handleGet = function(key, response, skipExpire) { DocumentHandler.prototype.handleGet = function(key, callback, response, skipExpire) {
this.store.get(key, function(ret) { this.store.get(key, function(ret) {
if (ret) { if (ret) {
winston.verbose('retrieved document', { key: key }); winston.verbose('retrieved document', { key: key });
var responseData = JSON.stringify({ data: ret, key: key });
if (callback) {
if (callback.match(/^[a-z0-9]+$/i)) {
response.writeHead(200, { 'content-type': 'application/javascript' });
response.end(callback + '(' + responseData + ');');
} else {
response.writeHead(400, { 'content-type': 'application/json' });
response.end(JSON.stringify({ message: 'invalid callback function name' }));
}
} else {
response.writeHead(200, { 'content-type': 'application/json' }); response.writeHead(200, { 'content-type': 'application/json' });
response.end(JSON.stringify({ data: ret, key: key })); response.end(responseData);
}
} }
else { else {
winston.warn('document not found', { key: key }); winston.warn('document not found', { key: key });

View file

@ -116,8 +116,10 @@ connect.createServer(
// get documents // get documents
app.get('/documents/:id', function(request, response, next) { app.get('/documents/:id', function(request, response, next) {
var skipExpire = !!config.documents[request.params.id]; var skipExpire = !!config.documents[request.params.id];
var parsedUrl = url.parse(request.url, true);
return documentHandler.handleGet( return documentHandler.handleGet(
request.params.id, request.params.id,
parsedUrl.query.callback,
response, response,
skipExpire skipExpire
); );