dinoloop-es8
Version:
A lightweight REST API Library for building scalable Node.js server-side applications powered by Typescript
48 lines • 3.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// tslint:disable-next-line:no-require-imports
const pathToRegexp = require("path-to-regexp");
const filter_1 = require("../../filter");
const exceptions_1 = require("../exceptions");
// it would proceed to next handler only if valid route is matched
// if valid route is not found, it fires error middleware chain
/**
* Compares the requested route against the registered routes
* @Throws RouteNotFoundException
*/
class RouteNotFoundMiddleware extends filter_1.RequestStartMiddleware {
constructor(routeTable) {
super();
this.routeTable = routeTable;
this.routes = [];
this.isRouteTableLoaded = false;
}
invoke(request, response, next) {
if (this.isRouteTableLoaded === false) {
// load the routes and create UrlParser objects
let routes = this.routeTable.getRoutes();
for (const route of routes) {
this.routes.push(pathToRegexp(route));
}
this.isRouteTableLoaded = true;
}
// Note: Following format should match with expression in "route.table.ts"
// '/[httpVerb]_[route]'
let requestUrl = `/${request.method}_${request.baseUrl}${request.path}`.toLowerCase();
let isRouteMatched = false;
for (const route of this.routes) {
if (route.test(requestUrl)) {
isRouteMatched = true;
break;
}
}
if (isRouteMatched) {
next();
}
else {
next(new exceptions_1.RouteNotFoundException(request.method, `${request.baseUrl}${request.path}`));
}
}
}
exports.RouteNotFoundMiddleware = RouteNotFoundMiddleware;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUubm90Zm91bmQubWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2J1aWx0aW4vbWlkZGxld2FyZXMvcm91dGUubm90Zm91bmQubWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhDQUE4QztBQUM5QywrQ0FBZ0Q7QUFDaEQseUNBQXNEO0FBQ3RELDhDQUF1RDtBQUl2RCxrRUFBa0U7QUFDbEUsK0RBQStEO0FBQy9EOzs7R0FHRztBQUNILDZCQUFxQyxTQUFRLCtCQUFzQjtJQUkvRCxZQUFvQixVQUF1QjtRQUN2QyxLQUFLLEVBQUUsQ0FBQztRQURRLGVBQVUsR0FBVixVQUFVLENBQWE7UUFIbkMsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUN0Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7SUFJbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFnQixFQUFFLFFBQWtCLEVBQUUsSUFBSTtRQUU3QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxLQUFLLEVBQUU7WUFDbkMsK0NBQStDO1lBQy9DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3pDO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztTQUNsQztRQUVELDBFQUEwRTtRQUMxRSx3QkFBd0I7UUFDeEIsSUFBSSxVQUFVLEdBQ1YsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pFLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztRQUUzQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDN0IsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN4QixjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixNQUFNO2FBQ1Q7U0FDSjtRQUVELElBQUksY0FBYyxFQUFFO1lBQ2hCLElBQUksRUFBRSxDQUFDO1NBQ1Y7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLG1DQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQzFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztDQUNKO0FBdkNELDBEQXVDQyJ9