1 | "use strict";
|
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7 | };
|
8 | var __metadata = (this && this.__metadata) || function (k, v) {
|
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10 | };
|
11 | Object.defineProperty(exports, "__esModule", { value: true });
|
12 | const Server_1 = require("../Server");
|
13 | const Controller_1 = require("../Controller");
|
14 | const debug_1 = require("../../debug");
|
15 | const Router_1 = require("../Router");
|
16 | const decorators_1 = require("../ServiceManager/decorators");
|
17 | const Response_1 = require("../Response");
|
18 | const AbstractMiddleware_1 = require("./AbstractMiddleware");
|
19 | const debug = debug_1.createDebugLogger('middleware:router');
|
20 | class RouterMiddleware extends AbstractMiddleware_1.AbstractMiddleware {
|
21 | async pass(ctx, next) {
|
22 | debug(`Routing for path "${ctx.path}".`);
|
23 | const method = ctx.method === Server_1.RequestMethods.Head ? Server_1.RequestMethods.Get : ctx.method;
|
24 | const match = this.routerService.resolve(method, ctx.path);
|
25 | if (!match) {
|
26 | ctx.state.response = this.responseService.clientError().notFound();
|
27 | debug('No match, returning not found.');
|
28 | return;
|
29 | }
|
30 | const { route, parameters } = match;
|
31 | const controllerName = Controller_1.ControllerManager.getPluginName(route.controller);
|
32 | const controller = this.controllerManager.get(route.controller);
|
33 | ctx.state.params = parameters;
|
34 | ctx.state.dispatch = {
|
35 | controllerName,
|
36 | controller,
|
37 | action: route.action,
|
38 | };
|
39 | debug(`Route matched "${controllerName}.${route.action}()".`);
|
40 | return next();
|
41 | }
|
42 | }
|
43 | __decorate([
|
44 | decorators_1.inject(Router_1.RouterService),
|
45 | __metadata("design:type", Router_1.RouterService)
|
46 | ], RouterMiddleware.prototype, "routerService", void 0);
|
47 | __decorate([
|
48 | decorators_1.inject(Response_1.ResponseService),
|
49 | __metadata("design:type", Response_1.ResponseService)
|
50 | ], RouterMiddleware.prototype, "responseService", void 0);
|
51 | __decorate([
|
52 | decorators_1.inject(Controller_1.ControllerManager),
|
53 | __metadata("design:type", Controller_1.ControllerManager)
|
54 | ], RouterMiddleware.prototype, "controllerManager", void 0);
|
55 | exports.RouterMiddleware = RouterMiddleware;
|
56 |
|
\ | No newline at end of file |