UNPKG

ws2801-webserver

Version:

A ready-to-use webserver for the WS2801-Pi package.

68 lines (67 loc) 2.52 kB
"use strict"; 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;