X-Git-Url: http://git.pjr.cc/?p=nodejsws.git;a=blobdiff_plain;f=lib%2Fwsrequest.js;fp=lib%2Fwsrequest.js;h=80e4d3c4f442bc7fa8656b745e8533e08ceac024;hp=a7ad0869b481f6081fdbfd51ffb2abfb64363f41;hb=f3610858364946faf944c86362b40b2644e4050a;hpb=e3c055f7d320ae19b93da9a09a9883ad94d14966 diff --git a/lib/wsrequest.js b/lib/wsrequest.js index a7ad086..80e4d3c 100644 --- a/lib/wsrequest.js +++ b/lib/wsrequest.js @@ -1,8 +1,15 @@ var url = require("url"); var path = require("path"); var fs = require("fs"); -var myparse = require("./myparse.js"); +//var myparse = require("./myparse.js"); var webmain = require("./webmain.js"); +var layouts = require("./layouts.js"); + +// global stuff +var extraCss = new Array(); +var extraJs = new Array(); +//var defaultLayout = null; +var defaultMainPurl = null; //var staticExtensions = ["html", "gif", "jpg", "css", "js", "ico"]; @@ -45,6 +52,10 @@ function wsRequest(request, response) { // now we need to find the extension used // to serve the request based no the first purl + + + /* + * if(purl.pathname == "/") { console.log("Serv main"); webmain.serveMain(request, response, function (request, response) { @@ -74,8 +85,110 @@ function wsRequest(request, response) { } return; }); + */ + + urlServicer(request, response, purl); + + + return; +} + +function urlServicer(request, response, purl) { + console.log("url servicer called for ", purl); + + // first resolve the module making the call and determine layout/purl + var purlClass = layouts; + var purlLayout = layouts.standard(); + + if(purl.pathname == "/") { + if(defaultMainPurl == null) { + console.log("set purl class to layouts"); + purlClass = layouts; + } else { + // find and load the purl + } + + if(typeof purlClass.layout == "undefined") { + console.log("set via undefined"); + purlLayout = layouts.standard(); + } else { + // find and resolve the layout + } + } else { + // handle the purls + } + + // now we should have a layout and a class + if(typeof purlClass.preResponse != "undefined") { + purlClass.preResponse(request, response, function() { + serviceLayout(request, response, purlClass, purlLayout); + }); + } else { + serviceLayout(request, response, purlClass, purlLayout); + } + return; +} + +function serviceLayout(request, response, purlClass, purlLayout) { + var reallay = "start:"+purlLayout+":end"; + var splitup = reallay.split("= splitup.length) { + response.write("end of caller"); + response.end(); + return; + } else if(offset == 0) { + console.log("write for offset 0"); + output = splitup[0].replace(/^start:/g, ""); + if(splitup.length == 1) output = output.replace(/:end$/g, ""); + console.log("did write: ", output); + response.write(output); + offset++; + processLayout(); + } else { + var thispart = splitup[offset].split("?>"); + var caller = thispart[0].trim(); + + console.log("in parts for bits: ", thispart); + console.log("and caller is: ", caller); + + // here we resolve and call the caller.... + //response.write("calling: " + caller); + resolveAndCall(request, response, caller, purlClass, function () { + output = thispart[1].replace(/:end$/g, ""); + response.write(output); + offset++; + processLayout(); + }); + } + } + + processLayout(); + + //response.write("servicer"); + //response.end(); +} + +function resolveAndCall(request, response, caller, purlClass, callback) { + //response.write("resolving: \"" + caller + "\""); + if(typeof purlClass[caller] != "undefined") { + purlClass[caller](request, response, callback); + } else if(typeof purlClass[caller] != "undefined"){ + layouts[caller](request, response, callback); + } else { + response.write("

Undefined layout section

"); + callback(); + } + //callback(); return; }