1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 | console.log('running up/qewdAppHandler.js in process ' + process.pid);
|
32 |
|
33 | var createDocStoreEvents = require('./createDocStoreEvents');
|
34 | var handleDocStoreEvents = require('./handleDocStoreEvents');
|
35 |
|
36 | var fs = require('fs');
|
37 |
|
38 | function getDirectories(path) {
|
39 | return fs.readdirSync(path).filter(function(file) {
|
40 | return fs.statSync(path + '/' + file).isDirectory();
|
41 | });
|
42 | }
|
43 |
|
44 | function use_microservice(message, send) {
|
45 |
|
46 | if (!message.request.headers) {
|
47 | message.request.headers = {
|
48 | authorization: 'Bearer ' + message.token
|
49 | };
|
50 | }
|
51 | var original_app = message.ewd_application;
|
52 | var _this = this;
|
53 |
|
54 | this.microServiceRouter.call(this, message.request, function(responseObj) {
|
55 |
|
56 | responseObj.type = message.original_type;
|
57 |
|
58 | console.log('type switched to ' + responseObj.type);
|
59 |
|
60 |
|
61 |
|
62 | var msg = {
|
63 | type: 'ewd-jwt-updateExpiry',
|
64 | params: {
|
65 | jwt: responseObj.message.token,
|
66 | application: original_app
|
67 | }
|
68 | };
|
69 |
|
70 | _this.handleMessage(msg, function(newJWTObj) {
|
71 | responseObj.message.token = newJWTObj.message.jwt;
|
72 | send (responseObj);
|
73 | });
|
74 | });
|
75 | return true;
|
76 | }
|
77 |
|
78 | module.exports = function(appPath) {
|
79 | var handlers = {};
|
80 | var workerResponseHandlers = {
|
81 | use_microservice: use_microservice
|
82 | };
|
83 |
|
84 | var handlerList = getDirectories(appPath);
|
85 | handlerList.forEach(function(name) {
|
86 | var handlerPath = appPath + '/' + name;
|
87 | handlers[name] = require(handlerPath);
|
88 | var onResponsePath = handlerPath + '/onResponse.js';
|
89 | console.log('onResponsePath = ' + onResponsePath);
|
90 | if (fs.existsSync(onResponsePath)) {
|
91 | console.log('workerResponseHandler loaded');
|
92 | workerResponseHandlers[name] = require(onResponsePath);
|
93 | }
|
94 | });
|
95 |
|
96 | var docStoreEvents;
|
97 | var rootPath = '/opt/qewd/mapped/';
|
98 | if (process.env.qewd_service_name) {
|
99 | rootPath = process.cwd() + '/' + process.env.qewd_service_name + '/';
|
100 | }
|
101 | if (process.env.mode && process.env.microservice) {
|
102 | rootPath = process.cwd() + '/' + process.env.microservice + '/';
|
103 | }
|
104 | var docStoreEventsPath = rootPath + 'docStoreEvents/events.json';
|
105 | if (fs.existsSync(docStoreEventsPath)) {
|
106 | docStoreEvents = createDocStoreEvents(docStoreEventsPath, rootPath);
|
107 |
|
108 | }
|
109 |
|
110 | var handlerModule = {
|
111 | handlers: handlers,
|
112 | workerResponseHandlers: workerResponseHandlers
|
113 | };
|
114 |
|
115 | var onLoadPath = appPath + '/onLoad.js';
|
116 | console.log('onLoadPath = ' + onLoadPath);
|
117 |
|
118 | var docStoreEventsFn = function() {};
|
119 | if (docStoreEvents) {
|
120 | docStoreEventsFn = function() {
|
121 | handleDocStoreEvents.call(this, docStoreEvents);
|
122 | };
|
123 | }
|
124 |
|
125 | var onLoadFn = function() {};
|
126 | if (fs.existsSync(onLoadPath)) {
|
127 | onLoadFn = require(onLoadPath);
|
128 | }
|
129 |
|
130 | handlerModule.init = function() {
|
131 | docStoreEventsFn.call(this);
|
132 | onLoadFn.call(this);
|
133 | };
|
134 |
|
135 | var beforeHandlerPath = appPath + '/beforeHandler.js';
|
136 | console.log('beforeHandlerPath = ' + beforeHandlerPath);
|
137 | if (fs.existsSync(beforeHandlerPath)) {
|
138 | handlerModule.beforeHandler = require(beforeHandlerPath);
|
139 | }
|
140 |
|
141 | var servicesAllowedPath = appPath + '/servicesAllowed.json';
|
142 | console.log('servicesAllowedPath = ' + servicesAllowedPath);
|
143 | if (fs.existsSync(servicesAllowedPath)) {
|
144 | try {
|
145 | handlerModule.servicesAllowed = require(servicesAllowedPath);
|
146 | console.log('servicesAllowed loaded: ' + JSON.stringify(handlerModule.servicesAllowed, null, 2));
|
147 | }
|
148 | catch(err) {
|
149 | console.log('Unable to load ' + servicesAllowedPath);
|
150 | }
|
151 | }
|
152 |
|
153 | return handlerModule;
|
154 | };
|
155 |
|