diff --git a/plugins/tiddlywiki/multiwikiserver/modules/route-get-tiddler.js b/plugins/tiddlywiki/multiwikiserver/modules/route-get-tiddler.js index 7a9fcea91..b45884caa 100644 --- a/plugins/tiddlywiki/multiwikiserver/modules/route-get-tiddler.js +++ b/plugins/tiddlywiki/multiwikiserver/modules/route-get-tiddler.js @@ -22,25 +22,36 @@ exports.handler = function(request,response,state) { // Get the parameters var recipe_name = $tw.utils.decodeURIComponentSafe(state.params[0]), recipe_name_2 = $tw.utils.decodeURIComponentSafe(state.params[1]), - title = $tw.utils.decodeURIComponentSafe(state.params[2]); - if(recipe_name === recipe_name_2) { - var tiddler = $tw.sqlTiddlerStore.getTiddler(title,recipe_name), - tiddlerFields = {}, - knownFields = [ - "bag", "created", "creator", "modified", "modifier", "permissions", "recipe", "revision", "tags", "text", "title", "type", "uri" - ]; - $tw.utils.each(tiddler,function(value,name) { - if(knownFields.indexOf(name) !== -1) { - tiddlerFields[name] = value; - } else { - tiddlerFields.fields = tiddlerFields.fields || {}; - tiddlerFields.fields[name] = value; - } - }); - tiddlerFields.revision = "0"; - tiddlerFields.bag = "bag-gamma"; - tiddlerFields.type = tiddlerFields.type || "text/vnd.tiddlywiki"; - state.sendResponse(200,{"Content-Type": "application/json"},JSON.stringify(tiddlerFields),"utf8"); + title = $tw.utils.decodeURIComponentSafe(state.params[2]), + tiddler = recipe_name === recipe_name_2 && $tw.sqlTiddlerStore.getTiddler(title,recipe_name); + if(recipe_name === recipe_name_2 && tiddler) { + // If application/json is requested then this is an API request, and gets the response in JSON + if(request.headers.accept && request.headers.accept.indexOf("application/json") !== -1) { + var tiddlerFields = {}, + knownFields = [ + "bag", "created", "creator", "modified", "modifier", "permissions", "recipe", "revision", "tags", "text", "title", "type", "uri" + ]; + $tw.utils.each(tiddler,function(value,name) { + if(knownFields.indexOf(name) !== -1) { + tiddlerFields[name] = value; + } else { + tiddlerFields.fields = tiddlerFields.fields || {}; + tiddlerFields.fields[name] = value; + } + }); + tiddlerFields.revision = "0"; + tiddlerFields.bag = "bag-gamma"; + tiddlerFields.type = tiddlerFields.type || "text/vnd.tiddlywiki"; + state.sendResponse(200,{"Content-Type": "application/json"},JSON.stringify(tiddlerFields),"utf8"); + } else { + // This is not a JSON API request, we should return the raw tiddler content + var type = tiddler.type || "text/plain"; + response.writeHead(200, "OK",{ + "Content-Type": type + }); + response.write(tiddler.text || "",($tw.config.contentTypeInfo[type] ||{encoding: "utf8"}).encoding); + response.end();; + } } else { response.writeHead(404); response.end(); diff --git a/plugins/tiddlywiki/multiwikiserver/modules/route-get-wiki.js b/plugins/tiddlywiki/multiwikiserver/modules/route-get-wiki.js index 17170d078..14089553c 100644 --- a/plugins/tiddlywiki/multiwikiserver/modules/route-get-wiki.js +++ b/plugins/tiddlywiki/multiwikiserver/modules/route-get-wiki.js @@ -51,7 +51,19 @@ exports.handler = function(request,response,state) { response.write(template.substring(0,markerPos + marker.length)); $tw.utils.each(titles,function(title) { var tiddler = $tw.sqlTiddlerStore.getTiddler(title,recipe_name); - response.write(JSON.stringify(Object.assign({},tiddler,{revision: "0", bag: "bag-gamma"}))); + if((tiddler.text || "").length > 10 * 1024 * 1024) { + response.write(JSON.stringify(Object.assign({},tiddler,{ + revision: "0", + bag: "bag-gamma", + text: undefined, + _canonical_uri: `/wiki/${recipe_name}/recipes/${recipe_name}/tiddlers/${title}` + }))); + } else { + response.write(JSON.stringify(Object.assign({},tiddler,{ + revision: "0", + bag: "bag-gamma" + }))); + } response.write(",") }); response.write(JSON.stringify({title: "$:/config/tiddlyweb/host",text: "$protocol$//$host$$pathname$/"}));