var Lourah = Lourah || {};
Activity.importScript(Lourah.jsFramework.parentDir() + "/Lourah.http.util.js");
Activity.importScript(Lourah.jsFramework.parentDir() + "/Lourah.socket.Server.js");
(function () {
Lourah.http = Lourah.http || {};
if (Lourah.http.Protocol) return;
var Synchronizer = Packages.org.mozilla.javascript.Synchronizer;
Lourah.http.Protocol = function(pathHandlers) {
function HttpExchange(method
,uri
,protocol
,requestMessage
,responseMessage) {
this.getMethod = () => method;
this.getUri = () => uri;
this.getProtocol = () => protocol;
this.getRequestMessage = () => requestMessage;
this.getResponseMessage = () => responseMessage;
this.toString = () => {
var s = "Exchange::{" + [
method
,uri
,protocol
,requestMessage
,responseMessage
]
+ "}::Exchange";
return s;
}
}
var pathSorted = Object.keys(pathHandlers).sort((a, b) => b.length - a.length);
function uri2js(juri) {
var uri = "" + juri;
var iQuery = uri.indexOf('?');
if (iQuery === -1) {
return { file: decodeURI(uri) + "/", query: {} };
}
var ret = {};
ret.file = decodeURI(uri.substring(0, iQuery)) + "/";
ret.query = {};
var query = uri.substring(iQuery + 1);
var params = query.split('&');
for(var i = 0; i < params.length; i++) {
param = params[i].split('=');
ret.query[decodeURI(param[0])] = decodeURI(param[1]);
}
return ret;
}
var notFoundHandler = (exchange) => {
var response = exchange.getResponseMessage();
response.setResponseCode(404);
response.getHeaders().set("Content-Type", "text/html");
response.getHeaders().set("Charset", "UTF-8");
response.setBody(
"