godprotocol 2.2.68 → 2.2.70
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/package.json +1 -1
- package/server/version_control.js +51 -22
package/package.json
CHANGED
|
@@ -39,25 +39,52 @@ const applyCors = (req, res) => {
|
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
const respond = (result, res) => {
|
|
42
|
+
// ----------------------------
|
|
43
|
+
// REDIRECT
|
|
44
|
+
// ----------------------------
|
|
45
|
+
|
|
46
|
+
if (result?.redirect) {
|
|
47
|
+
const status = result?.status || 302;
|
|
48
|
+
|
|
49
|
+
res.statusCode = status;
|
|
50
|
+
res.setHeader("Location", result.redirect);
|
|
51
|
+
|
|
52
|
+
res.end();
|
|
53
|
+
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// ----------------------------
|
|
58
|
+
// NORMAL JSON RESPONSE
|
|
59
|
+
// ----------------------------
|
|
60
|
+
|
|
42
61
|
const response = {
|
|
43
62
|
ok: result?.ok ?? false,
|
|
44
63
|
message: result?.message ?? "",
|
|
45
64
|
data: result?.data,
|
|
46
65
|
};
|
|
47
66
|
|
|
48
|
-
if (result?.pagination)
|
|
49
|
-
|
|
67
|
+
if (result?.pagination) {
|
|
68
|
+
response.pagination = result.pagination;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (result?.token) {
|
|
72
|
+
response.token = result.token;
|
|
73
|
+
}
|
|
50
74
|
|
|
51
75
|
const status = result?.status || (result?.ok ? 200 : 403);
|
|
52
76
|
|
|
53
77
|
res.statusCode = status;
|
|
78
|
+
|
|
54
79
|
res.setHeader("Content-Type", "application/json");
|
|
80
|
+
|
|
55
81
|
res.end(JSON.stringify(response));
|
|
56
82
|
|
|
57
83
|
return response;
|
|
58
84
|
};
|
|
59
85
|
|
|
60
86
|
const version_middleware = async (req, res, routers) => {
|
|
87
|
+
let error_stage = "Version Middleware";
|
|
61
88
|
try {
|
|
62
89
|
applyCors(req, res);
|
|
63
90
|
|
|
@@ -66,9 +93,15 @@ const version_middleware = async (req, res, routers) => {
|
|
|
66
93
|
return res.end();
|
|
67
94
|
}
|
|
68
95
|
|
|
69
|
-
|
|
96
|
+
let version;
|
|
70
97
|
|
|
71
|
-
|
|
98
|
+
if (req.method === "GET") {
|
|
99
|
+
version = "__GET__";
|
|
100
|
+
} else {
|
|
101
|
+
version = req.headers["x-api-version"] || "v1";
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const versionRouter = await routers.get_version(version);
|
|
72
105
|
|
|
73
106
|
if (!versionRouter) {
|
|
74
107
|
return respond(
|
|
@@ -81,27 +114,17 @@ const version_middleware = async (req, res, routers) => {
|
|
|
81
114
|
);
|
|
82
115
|
}
|
|
83
116
|
|
|
84
|
-
// ----------------------------
|
|
85
|
-
// PARSE URL + QUERY
|
|
86
|
-
// ----------------------------
|
|
87
|
-
|
|
88
|
-
const url = new URL(req.url, `http://${req.headers.host}`);
|
|
89
|
-
|
|
90
|
-
const query = Object.fromEntries(url.searchParams.entries());
|
|
91
|
-
|
|
92
|
-
// ----------------------------
|
|
93
|
-
// PARSE BODY
|
|
94
|
-
// ----------------------------
|
|
95
|
-
|
|
96
117
|
let body = {};
|
|
97
118
|
|
|
98
|
-
if (
|
|
119
|
+
if (req.method === "GET") {
|
|
120
|
+
const url = new URL(req.url, `http://${req.headers.host}`);
|
|
121
|
+
|
|
122
|
+
body = Object.fromEntries(url.searchParams.entries());
|
|
123
|
+
} else {
|
|
124
|
+
error_stage = "Body Parser";
|
|
99
125
|
body = await getBody(req);
|
|
100
126
|
}
|
|
101
127
|
|
|
102
|
-
// unified payload
|
|
103
|
-
body = req.method === "GET" ? query : body;
|
|
104
|
-
|
|
105
128
|
if (versionRouter.config?.is_old) {
|
|
106
129
|
req.body = body;
|
|
107
130
|
return versionRouter.routes(req, res);
|
|
@@ -110,11 +133,14 @@ const version_middleware = async (req, res, routers) => {
|
|
|
110
133
|
const router = routers;
|
|
111
134
|
|
|
112
135
|
// remove query string from route
|
|
113
|
-
const
|
|
136
|
+
const parsedUrl = new URL(req.url, `http://${req.headers.host}`);
|
|
137
|
+
req.url = parsedUrl.pathname;
|
|
138
|
+
const name = req.url.replace(/^\//, "");
|
|
114
139
|
|
|
115
140
|
const isWebhook = req.headers["is-webhook"];
|
|
116
141
|
|
|
117
142
|
// SECURITY
|
|
143
|
+
error_stage = "Header";
|
|
118
144
|
const securityResult = await router.handle_security(name, req);
|
|
119
145
|
|
|
120
146
|
if (securityResult !== true) {
|
|
@@ -126,6 +152,7 @@ const version_middleware = async (req, res, routers) => {
|
|
|
126
152
|
|
|
127
153
|
// WEBHOOK PRIOR
|
|
128
154
|
if (!isWebhook) {
|
|
155
|
+
error_stage = "Callback";
|
|
129
156
|
const webPrior = await router.handle_webhook_prior({
|
|
130
157
|
...req,
|
|
131
158
|
body,
|
|
@@ -139,6 +166,7 @@ const version_middleware = async (req, res, routers) => {
|
|
|
139
166
|
}
|
|
140
167
|
|
|
141
168
|
// EXECUTE
|
|
169
|
+
error_stage = "Handler";
|
|
142
170
|
const result = await router.execute(name, {
|
|
143
171
|
body,
|
|
144
172
|
route: name,
|
|
@@ -151,12 +179,13 @@ const version_middleware = async (req, res, routers) => {
|
|
|
151
179
|
|
|
152
180
|
// WEBHOOK AFTER
|
|
153
181
|
if (!isWebhook) {
|
|
182
|
+
error_stage = "Webhook";
|
|
154
183
|
await router.handle_webhook_after(req, result);
|
|
155
184
|
}
|
|
156
185
|
|
|
157
186
|
return respond(result, res);
|
|
158
187
|
} catch (err) {
|
|
159
|
-
console.error(
|
|
188
|
+
console.error(`${error_stage} Error:`, err);
|
|
160
189
|
|
|
161
190
|
return respond(
|
|
162
191
|
{
|