microframe-ts
Version:
Typescript framework for creating microservices.
63 lines • 2.62 kB
JavaScript
;
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