UNPKG

dk-srv

Version:
97 lines (96 loc) 2.96 kB
"use strict"; 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); };