dk-srv
Version:
DK server
97 lines (96 loc) • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const dk_num_1 = require("dk-num");
const dk_str_1 = require("dk-str");
const dk_time_1 = require("dk-time");
const http = require("http");
const main_1 = require("./main");
const res_def_1 = require("./res_def");
const static_1 = require("./static");
exports.srv_new = (opt) => {
const server = new http.Server();
if (opt === undefined) {
opt = {};
}
if (opt.name === undefined) {
opt.name = dk_str_1.str_make(main_1.SRV_NAME);
}
if (opt.port === undefined) {
opt.port = dk_num_1.num_2u(2, main_1.SRV_PORT);
}
const srv = {
port: opt.port,
name: opt.name,
http: server,
requests: [],
};
// default / main
main_1.srv_req(srv, {
path: dk_str_1.str_make("^/$"),
callback: res_def_1.srv_res_def,
contentType: dk_str_1.str_make(main_1.SRV_RES_TYPE),
});
const port = dk_num_1.num_value(srv.port);
const name = dk_str_1.str_value(srv.name);
const contentType = dk_str_1.str_value(srv.requests[0].contentType);
server.listen(port, () => {
console.log(`start %s in port %s`, name, port);
console.log("===========================");
});
server.on('request', (reqHttp, resHttp) => {
const item = {
time: dk_time_1.time_new(undefined),
reqHttp: reqHttp,
resHttp: resHttp,
body: dk_str_1.str_make(""),
match: undefined,
};
requests(srv.requests, item);
let type = contentType;
if (item.req !== undefined) {
item.req.callback(item);
if (item.req.contentType !== undefined) {
type = dk_str_1.str_value(item.req.contentType);
}
}
else {
const stOk = static_1.srv_static(item);
if (!stOk) {
return;
}
}
let data = dk_str_1.str_value(item.body);
resHttp.writeHead(200, {
'Content-Type': type,
});
const passedTime = dk_str_1.str_value(dk_time_1.time_passed(item.time));
data = data.replace(/\{TOTAL_TIME\}/, passedTime);
resHttp.write(data);
resHttp.end('\n');
});
return srv;
};
// static
const requests = (requests, item) => {
let len = requests.length;
let req = undefined;
while (len > 0) {
len--;
req = requests[len];
const url = item.reqHttp.url;
const pathStr = dk_str_1.str_value(req.path);
/*console.log(7777, url, pathStr, url.search(pathStr));*/
const match = url.match(pathStr);
if (match) {
item.match = match;
if (req.callback !== undefined) {
break;
}
}
else {
req = undefined;
}
}
item.req = req;
console.log("path; ", item.reqHttp.url);
};