godprotocol 2.3.38 → 2.3.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Godprotocol.js +10 -0
- package/package.json +1 -1
- package/server/Routable/Header.js +7 -0
- package/server/Routable/Route_table.js +24 -3
- package/server/version_control.js +21 -12
package/Godprotocol.js
CHANGED
|
@@ -141,6 +141,16 @@ class GodProtocol {
|
|
|
141
141
|
on_request = async (req, res) => {
|
|
142
142
|
await version_middleware(req, res, this.route_table);
|
|
143
143
|
};
|
|
144
|
+
|
|
145
|
+
callback({ before, after } = {}) {
|
|
146
|
+
if (before) {
|
|
147
|
+
this.route_table.before(before);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (after) {
|
|
151
|
+
this.route_table.after(after);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
144
154
|
}
|
|
145
155
|
|
|
146
156
|
export default GodProtocol;
|
package/package.json
CHANGED
|
@@ -75,6 +75,13 @@ class DB {
|
|
|
75
75
|
toSet.expiry = new Date(payload.expiry);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
if (payload?.profile?._id) {
|
|
79
|
+
toSet.profile_id = payload.profile._id;
|
|
80
|
+
}
|
|
81
|
+
if (payload?.platform?._id) {
|
|
82
|
+
toSet.platform_id = payload.platform._id;
|
|
83
|
+
}
|
|
84
|
+
|
|
78
85
|
res = await coll.updateOne(
|
|
79
86
|
query,
|
|
80
87
|
{
|
|
@@ -18,9 +18,20 @@ class Route_table extends Headers {
|
|
|
18
18
|
this.api_key = gp.api_key;
|
|
19
19
|
this.platform_uri = gp.platform_uri;
|
|
20
20
|
this.versions = {};
|
|
21
|
+
|
|
22
|
+
this.before_callbacks = new Array();
|
|
23
|
+
this.after_callbacks = new Array();
|
|
21
24
|
this.validators = {};
|
|
22
25
|
}
|
|
23
26
|
|
|
27
|
+
before(fn) {
|
|
28
|
+
this.before_callbacks.push(fn);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
after(fn) {
|
|
32
|
+
this.after_callbacks.push(fn);
|
|
33
|
+
}
|
|
34
|
+
|
|
24
35
|
get_version = async (version = this.active_version) => {
|
|
25
36
|
let ver = this.versions[version];
|
|
26
37
|
|
|
@@ -90,11 +101,21 @@ class Route_table extends Headers {
|
|
|
90
101
|
};
|
|
91
102
|
|
|
92
103
|
get_route = async (name) => {
|
|
93
|
-
|
|
104
|
+
const version = this.versions[this.active_version];
|
|
94
105
|
|
|
95
|
-
|
|
106
|
+
if (version.routes[name]) {
|
|
107
|
+
return version.routes[name];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
for (const [pattern, route] of Object.entries(version.routes)) {
|
|
111
|
+
if (pattern.startsWith("^")) {
|
|
112
|
+
if (new RegExp(pattern).test(name)) {
|
|
113
|
+
return route;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
96
117
|
|
|
97
|
-
return
|
|
118
|
+
return null;
|
|
98
119
|
};
|
|
99
120
|
|
|
100
121
|
getValue = (obj, path) => path.split(".").reduce((o, key) => o?.[key], obj);
|
|
@@ -211,19 +211,21 @@ const version_middleware = async (req, res, routers) => {
|
|
|
211
211
|
const db = await router.resolve_db(req);
|
|
212
212
|
|
|
213
213
|
// WEBHOOK PRIOR
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
const callback = await router.handle_before({
|
|
215
|
+
req,
|
|
216
|
+
body,
|
|
217
|
+
route: name,
|
|
218
|
+
db: db.db,
|
|
219
|
+
});
|
|
220
220
|
|
|
221
|
-
|
|
222
|
-
return respond(webPrior, res);
|
|
223
|
-
}
|
|
221
|
+
if (callback?.response) return respond(callback.response, res);
|
|
224
222
|
|
|
225
|
-
|
|
226
|
-
|
|
223
|
+
if (callback?.body) body = callback.body;
|
|
224
|
+
|
|
225
|
+
if (callback?.headers) req.headers = callback.headers;
|
|
226
|
+
|
|
227
|
+
if (callback?.db) db.db = callback.db;
|
|
228
|
+
if (callback?.route) name = callback.route;
|
|
227
229
|
|
|
228
230
|
// EXECUTE
|
|
229
231
|
error_stage = "Handler";
|
|
@@ -242,7 +244,14 @@ const version_middleware = async (req, res, routers) => {
|
|
|
242
244
|
// WEBHOOK AFTER
|
|
243
245
|
if (!isWebhook && version !== "*") {
|
|
244
246
|
error_stage = "Webhook";
|
|
245
|
-
|
|
247
|
+
|
|
248
|
+
await router.handle_after({
|
|
249
|
+
req,
|
|
250
|
+
result,
|
|
251
|
+
version,
|
|
252
|
+
route: name,
|
|
253
|
+
db: db.db,
|
|
254
|
+
});
|
|
246
255
|
}
|
|
247
256
|
|
|
248
257
|
return respond(result, res);
|