UNPKG

4.29 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const StatusCode_1 = require("./StatusCode");
4const instance_1 = require("./instance");
5const StormError_1 = require("./StormError");
6const InternalError_1 = require("./InternalError");
7class 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}
125exports.Handler = Handler;
126//# sourceMappingURL=Handler.js.map
\No newline at end of file