UNPKG

microframe-ts

Version:

Typescript framework for creating microservices.

63 lines 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseController = exports.HttpMethod = void 0; var Express = require("express"); var __1 = require(".."); var api_1 = require("../event/api"); var singleton_1 = require("../singleton"); /** * Enum that represents HTTP methods. */ var HttpMethod; (function (HttpMethod) { HttpMethod[HttpMethod["GET"] = 0] = "GET"; HttpMethod[HttpMethod["POST"] = 1] = "POST"; HttpMethod[HttpMethod["PUT"] = 2] = "PUT"; HttpMethod[HttpMethod["DELETE"] = 3] = "DELETE"; })(HttpMethod = exports.HttpMethod || (exports.HttpMethod = {})); /** * Base controller for REST controllers. */ var BaseController = /** @class */ (function () { function BaseController(path) { this.path = path; this.routes = []; this.router = Express.Router(); this.InitRoutes(); (0, __1.UseLogger)().debug("Routes registered - ".concat(this.routes)); } BaseController.prototype.InitRoutes = function () { }; /** * Registers ExpressRoutes with the controller router. * @remark Also populates the controller routes property; which can be used for debug. * @param expressRoutes the routes to register with the router. */ BaseController.prototype.RegisterRoutes = function (expressRoutes) { var _this = this; expressRoutes.forEach(function (expressRoute) { _this.routes.push(expressRoute.path); switch (expressRoute.method) { case HttpMethod.GET: _this.router.get(expressRoute.path, publishNewApiRequestEvent, expressRoute.handler); break; case HttpMethod.POST: _this.router.post(expressRoute.path, publishNewApiRequestEvent, expressRoute.handler); break; case HttpMethod.PUT: _this.router.put(expressRoute.path, publishNewApiRequestEvent, expressRoute.handler); break; case HttpMethod.DELETE: _this.router.delete(expressRoute.path, publishNewApiRequestEvent, expressRoute.handler); break; } }); }; return BaseController; }()); exports.BaseController = BaseController; var publishNewApiRequestEvent = function (request, _, next) { var eventAggregator = (0, singleton_1.UseEventAggregator)(); eventAggregator.GetEvent(api_1.NewApiRequestEvent).Publish({ Request: request }); next(); }; //# sourceMappingURL=controller.js.map