1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const StatusCode_1 = require("./StatusCode");
|
4 | const instance_1 = require("./instance");
|
5 | const StormError_1 = require("./StormError");
|
6 | const InternalError_1 = require("./InternalError");
|
7 | class Handler {
|
8 | constructor(app) {
|
9 | this._app = app;
|
10 | this._middlewares = this._initMiddlewares();
|
11 | }
|
12 | _initMiddlewares() {
|
13 | return [];
|
14 | }
|
15 | getAccessToken(request) {
|
16 | let config = instance_1.getInstance().getConfig();
|
17 | let authHeader = config.authentication_header;
|
18 | return request.getHeader(authHeader);
|
19 | }
|
20 | getDB() {
|
21 | return this._app.getDB();
|
22 | }
|
23 | async _executeMiddlewares(request, response) {
|
24 | let result = {
|
25 | request,
|
26 | response
|
27 | };
|
28 | try {
|
29 | for (let i = 0; i < this._middlewares.length; i++) {
|
30 | let middleware = this._middlewares[i];
|
31 | console.log(`executing middleware ${i}`);
|
32 | result = await middleware.execute(result.request, result.response);
|
33 | }
|
34 | }
|
35 | catch (ex) {
|
36 | instance_1.getInstance().getLogger().error(ex);
|
37 | let error = null;
|
38 | if (!(ex instanceof StormError_1.StormError)) {
|
39 | error = new InternalError_1.InternalError(ex);
|
40 | }
|
41 | else {
|
42 | error = ex;
|
43 | }
|
44 | this._onMiddlewareReject(request, response, error);
|
45 | return Promise.reject(error);
|
46 | }
|
47 | if (!result) {
|
48 | result = {
|
49 | request: null,
|
50 | response: null
|
51 | };
|
52 | }
|
53 | if (!result.request) {
|
54 | result.request = request;
|
55 | }
|
56 | if (!result.response) {
|
57 | result.response = response;
|
58 | }
|
59 | return Promise.resolve(result);
|
60 | }
|
61 | _onMiddlewareReject(request, response, error) {
|
62 | response.error(error);
|
63 | }
|
64 | get(request, response) {
|
65 | return new Promise((resolve, reject) => {
|
66 | this._executeMiddlewares(request, response).then((result) => {
|
67 | this._get(result.request, result.response);
|
68 | resolve();
|
69 | }).catch((error) => {
|
70 | this._onMiddlewareReject(request, response, error);
|
71 | reject(error);
|
72 | });
|
73 | });
|
74 | }
|
75 | put(request, response) {
|
76 | return new Promise((resolve, reject) => {
|
77 | this._executeMiddlewares(request, response).then((result) => {
|
78 | this._put(result.request, result.response);
|
79 | resolve();
|
80 | }).catch((error) => {
|
81 | this._onMiddlewareReject(request, response, error);
|
82 | reject(error);
|
83 | });
|
84 | });
|
85 | }
|
86 | post(request, response) {
|
87 | return new Promise((resolve, reject) => {
|
88 | this._executeMiddlewares(request, response).then((result) => {
|
89 | this._post(result.request, result.response);
|
90 | resolve();
|
91 | }).catch((error) => {
|
92 | this._onMiddlewareReject(request, response, error);
|
93 | reject(error);
|
94 | });
|
95 | });
|
96 | }
|
97 | delete(request, response) {
|
98 | return new Promise((resolve, reject) => {
|
99 | this._executeMiddlewares(request, response).then((result) => {
|
100 | this._delete(result.request, result.response);
|
101 | resolve();
|
102 | }).catch((error) => {
|
103 | this._onMiddlewareReject(request, response, error);
|
104 | reject(error);
|
105 | });
|
106 | });
|
107 | }
|
108 | _get(request, response) {
|
109 | response.setStatus(StatusCode_1.StatusCode.INTERNAL_NOT_IMPLEMENTED).send();
|
110 | return Promise.resolve();
|
111 | }
|
112 | _post(request, response) {
|
113 | response.setStatus(StatusCode_1.StatusCode.INTERNAL_NOT_IMPLEMENTED).send();
|
114 | return Promise.resolve();
|
115 | }
|
116 | _put(request, response) {
|
117 | response.setStatus(StatusCode_1.StatusCode.INTERNAL_NOT_IMPLEMENTED).send();
|
118 | return Promise.resolve();
|
119 | }
|
120 | _delete(request, response) {
|
121 | response.setStatus(StatusCode_1.StatusCode.INTERNAL_NOT_IMPLEMENTED).send();
|
122 | return Promise.resolve();
|
123 | }
|
124 | }
|
125 | exports.Handler = Handler;
|
126 |
|
\ | No newline at end of file |