mirror of
https://github.com/TiddlyWiki/TiddlyWiki5.git
synced 2026-05-02 00:16:40 +00:00
Fix etag handling
This commit is contained in:
@@ -21,8 +21,9 @@ exports.handler = function(request,response,state) {
|
||||
var bag_name = $tw.utils.decodeURIComponentSafe(state.params[0]),
|
||||
title = $tw.utils.decodeURIComponentSafe(state.params[1]);
|
||||
if(bag_name) {
|
||||
$tw.mws.store.deleteTiddler(title,bag_name);
|
||||
var result = $tw.mws.store.deleteTiddler(title,bag_name);
|
||||
response.writeHead(204, "OK", {
|
||||
Etag: "\"tiddler_id:" + result.tiddler_id + "\"",
|
||||
"Content-Type": "text/plain"
|
||||
});
|
||||
response.end();
|
||||
|
||||
@@ -24,7 +24,8 @@ exports.handler = function(request,response,state) {
|
||||
const result = $tw.mws.store.getBagTiddlerStream(title,bag_name);
|
||||
if(result) {
|
||||
response.writeHead(200, "OK",{
|
||||
"Content-Type": result.type
|
||||
Etag: "\"tiddler_id:" + result.tiddler_id + "\"",
|
||||
"Content-Type": result.type,
|
||||
});
|
||||
result.stream.pipe(response);
|
||||
return;
|
||||
|
||||
@@ -41,13 +41,17 @@ exports.handler = function(request,response,state) {
|
||||
}
|
||||
});
|
||||
tiddlerFields.type = tiddlerFields.type || "text/vnd.tiddlywiki";
|
||||
state.sendResponse(200,{"Content-Type": "application/json"},JSON.stringify(tiddlerFields),"utf8");
|
||||
state.sendResponse(200,{
|
||||
Etag: "\"tiddler_id:" + tiddlerInfo.tiddler_id + "\"",
|
||||
"Content-Type": "application/json"
|
||||
},JSON.stringify(tiddlerFields),"utf8");
|
||||
return;
|
||||
} else {
|
||||
// This is not a JSON API request, we should return the raw tiddler content
|
||||
const result = $tw.mws.store.getBagTiddlerStream(title,bag_name);
|
||||
if(result) {
|
||||
response.writeHead(200, "OK",{
|
||||
Etag: "\"tiddler_id:" + result.tiddler_id + "\"",
|
||||
"Content-Type": result.type
|
||||
});
|
||||
result.stream.pipe(response);
|
||||
|
||||
@@ -41,12 +41,16 @@ exports.handler = function(request,response,state) {
|
||||
}
|
||||
});
|
||||
tiddlerFields.type = tiddlerFields.type || "text/vnd.tiddlywiki";
|
||||
state.sendResponse(200,{"Content-Type": "application/json"},JSON.stringify(tiddlerFields),"utf8");
|
||||
state.sendResponse(200,{
|
||||
Etag: "\"tiddler_id:" + tiddlerInfo.tiddler_id + "\"",
|
||||
"Content-Type": "application/json"
|
||||
},JSON.stringify(tiddlerFields),"utf8");
|
||||
return;
|
||||
} else {
|
||||
// This is not a JSON API request, we should return the raw tiddler content
|
||||
var type = tiddlerInfo.tiddler.type || "text/plain";
|
||||
response.writeHead(200, "OK",{
|
||||
Etag: "\"tiddler_id:" + tiddlerInfo.tiddler_id + "\"",
|
||||
"Content-Type": type
|
||||
});
|
||||
response.write(tiddlerInfo.tiddler.text || "",($tw.config.contentTypeInfo[type] ||{encoding: "utf8"}).encoding);
|
||||
|
||||
@@ -48,17 +48,35 @@ exports.handler = function(request,response,state) {
|
||||
if(markerPos === -1) {
|
||||
throw new Error("Cannot find tiddler store in template");
|
||||
}
|
||||
function writeTiddler(tiddlerFields) {
|
||||
response.write(JSON.stringify(tiddlerFields).replace(/</g,"\\u003c"));
|
||||
response.write(",\n");
|
||||
}
|
||||
response.write(template.substring(0,markerPos + marker.length));
|
||||
const bagInfo = {},
|
||||
revisionInfo = {};
|
||||
$tw.utils.each(recipeTiddlers,function(recipeTiddlerInfo) {
|
||||
var result = $tw.mws.store.getRecipeTiddler(recipeTiddlerInfo.title,recipe_name);
|
||||
if(result) {
|
||||
var tiddlerFields = result.tiddler;
|
||||
response.write(JSON.stringify(tiddlerFields).replace(/</g,"\\u003c"));
|
||||
response.write(",\n")
|
||||
bagInfo[result.tiddler.title] = result.bag_name;
|
||||
revisionInfo[result.tiddler.title] = result.tiddler_id.toString();
|
||||
writeTiddler(result.tiddler);
|
||||
}
|
||||
});
|
||||
response.write(JSON.stringify({title: "$:/config/multiwikiclient/recipe",text: recipe_name}));
|
||||
response.write(",\n")
|
||||
writeTiddler({
|
||||
title: "$:/config/multiwikiclient/tiddlers/bag",
|
||||
text: JSON.stringify(bagInfo),
|
||||
type: "application/json"
|
||||
});
|
||||
writeTiddler({
|
||||
title: "$:/config/multiwikiclient/tiddlers/revision",
|
||||
text: JSON.stringify(revisionInfo),
|
||||
type: "application/json"
|
||||
});
|
||||
writeTiddler({
|
||||
title: "$:/config/multiwikiclient/recipe",
|
||||
text: recipe_name
|
||||
});
|
||||
response.write(template.substring(markerPos + marker.length))
|
||||
// Finish response
|
||||
response.end();
|
||||
|
||||
@@ -38,7 +38,7 @@ exports.handler = function(request,response,state) {
|
||||
var result = $tw.mws.store.saveRecipeTiddler(fields,recipe_name);
|
||||
if(result) {
|
||||
response.writeHead(204, "OK",{
|
||||
Etag: "\"" + result.bag_name + "/" + encodeURIComponent(title) + "/" + result.tiddler_id + ":\"",
|
||||
Etag: "\"tiddler_id:" + result.tiddler_id + "\"",
|
||||
"Content-Type": "text/plain"
|
||||
});
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user