flagpole
Version:
Simple and fast DOM integration, headless or headful browser, and REST API testing framework.
89 lines • 2.54 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebServer = exports.WebResponse = void 0;
const http = require("http");
const fs = require("fs");
class WebResponse {
constructor(response, opts) {
this._output = "";
this._response = response;
if (opts.templatePath) {
this._output = fs.readFileSync(opts.templatePath, "utf8");
}
else if (opts.input) {
this._output = opts.input;
}
}
static createFromTemplate(response, templatePath) {
return new WebResponse(response, { templatePath: templatePath });
}
static createFromInput(response, input) {
return new WebResponse(response, { input: input });
}
replace(key, value) {
this._output = this._output.replace("${" + key + "}", value);
return this;
}
parse(replace) {
for (const key in replace) {
this.replace(key, replace[key]);
}
return this;
}
send(replace) {
if (typeof replace != "undefined") {
this.parse(replace);
}
this._response.end(this._output);
return this;
}
}
exports.WebResponse = WebResponse;
class WebServer {
constructor(requestHandler) {
this._httpPort = 3000;
this._server = http.createServer(requestHandler);
}
get isListening() {
return this._server.listening;
}
get httpPort() {
return this._httpPort;
}
set httpPort(value) {
this._httpPort = value;
}
listen(port) {
if (this.isListening) {
throw new Error("HTTP Server is already listening.");
}
return new Promise((resolve, reject) => {
if (typeof port != "undefined" && port > 0) {
this._httpPort = Math.ceil(port);
}
this._server
.listen({ port: this._httpPort }, () => {
resolve();
})
.on("error", (err) => {
if (err) {
return reject(`Could not listen on port ${this._httpPort}: ${err}`);
}
});
});
}
close() {
return new Promise((resolve) => {
if (this.isListening) {
this._server.close(() => {
resolve();
});
}
else {
resolve();
}
});
}
}
exports.WebServer = WebServer;
//# sourceMappingURL=web-server.js.map
;