1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-06-25 23:03:15 +00:00

Allow all methods and add bodyFormat property to route definition (#3362)

* Allow all methods and add bodyFormat property to route definition

* Set string as the default bodyFormat

* Only set encoding on string routes
This commit is contained in:
Arlen22 2018-07-20 04:24:57 +08:00 committed by Jeremy Ruston
parent 8b787cd806
commit aa8b2e11bb

View File

@ -196,25 +196,33 @@ Server.prototype.requestHandler = function(request,response) {
response.end(); response.end();
return; return;
} }
// Set the encoding for the incoming request
// TODO: Presumably this would need tweaking if we supported PUTting binary tiddlers //receive the request body if necessary and hand off to the route handler
request.setEncoding("utf8"); if(route.bodyFormat === "stream" || request.method === "GET" || request.method === "HEAD"){
// Dispatch the appropriate method //let the route handle the request stream itself
switch(request.method) { route.handler(request,response,state);
case "GET": // Intentional fall-through } else if(route.bodyFormat === "string" || !route.bodyFormat){
case "DELETE": // Set the encoding for the incoming request
request.setEncoding("utf8");
var data = "";
request.on("data",function(chunk) {
data += chunk.toString();
});
request.on("end",function() {
state.data = data;
route.handler(request,response,state); route.handler(request,response,state);
break; });
case "PUT": } else if(route.bodyFormat === "buffer"){
var data = ""; var data = [];
request.on("data",function(chunk) { request.on("data",function(chunk) {
data += chunk.toString(); data.push(chunk);
}); });
request.on("end",function() { request.on("end",function(){
state.data = data; state.data = Buffer.concat(data);
route.handler(request,response,state); route.handler(request,response,state);
}); })
break; } else {
throw "Invalid bodyFormat " + route.bodyFormat + " in route " + route.method + " " + route.path.source;
} }
}; };