ws2801-webserver
Version:
A ready-to-use webserver for the WS2801-Pi package.
68 lines (67 loc) • 2.52 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Webserver = void 0;
const body_parser_1 = __importDefault(require("body-parser"));
const cors_1 = __importDefault(require("cors"));
const express_1 = __importDefault(require("express"));
const http_1 = __importDefault(require("http"));
const logger_1 = require("./logger");
const logger = new logger_1.Logger('Webserver');
class Webserver {
constructor(port, logRequests) {
this.port = port;
this.logRequests = logRequests;
this.server = express_1.default();
this.server.use(body_parser_1.default.json());
this.server.use(cors_1.default());
this.httpServer = http_1.default.createServer(this.server);
}
start() {
this.httpServer.listen(this.port, () => {
logger.log(`listening on port ${this.port}!`);
});
}
stop() {
this.httpServer.close();
}
getHttpServer() {
return this.httpServer;
}
getExpressServer() {
return this.server;
}
addMiddleware(middleware) {
this.server.use(middleware);
}
addPostRoute(route, callback) {
const callbackWithLogging = (request, response) => {
if (this.logRequests) {
logger.log(`Requested (post) route '${route}' with body '${JSON.stringify(request.body, null, 2)}' with query params '${JSON.stringify(request.query, null, 2)}'.`);
}
callback(request, response);
};
this.server.post(route, callbackWithLogging);
}
addGetRoute(route, callback) {
const callbackWithLogging = (request, response) => {
if (this.logRequests) {
logger.log(`Requested (get) route '${route}' with query params '${JSON.stringify(request.query, null, 2)}'.`);
}
callback(request, response);
};
this.server.get(route, callbackWithLogging);
}
addDeleteRoute(route, callback) {
const callbackWithLogging = (request, response) => {
if (this.logRequests) {
logger.log(`Requested (delete) route '${route}' with query params '${JSON.stringify(request.query, null, 2)}'.`);
}
callback(request, response);
};
this.server.delete(route, callbackWithLogging);
}
}
exports.Webserver = Webserver;