Skip to content

Commit 70405c5

Browse files
committed
Update to 2.18.0
1 parent 396325e commit 70405c5

17 files changed

+707
-3
lines changed

api/APIController.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
declare module "zetaret.node.api::APIController";
2+
declare module "protoss-nodejs-basic/api/APIController.js";
3+
14
class APIController implements zetaret.node.api.APIController {
25
public ctype: string;
36
public api: Array<string>;

api/DataValidator.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
declare module "zetaret.node.api::DataValidator";
2+
declare module "protoss-nodejs-basic/api/DataValidator.js";
3+
14
class DataValidator implements zetaret.node.api.DataValidator {
25
public log: boolean = false;
36

api/Randomizer.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
declare module "zetaret.node.api::Randomizer";
2+
declare module "protoss-nodejs-basic/api/Randomizer.js";
3+
14
class Randomizer implements zetaret.node.api.Randomizer {
25
public Seed: number;
36
public Count: number;

api/Router.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
declare module "zetaret.node.api::Router";
2+
declare module "protoss-nodejs-basic/api/Router.js";
3+
14
class Router implements zetaret.node.api.Router {
25
public prefix: string = "";
36
public adds: zetaret.node.api.RouterAdds[] = [];
Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
class APIController {
2+
constructor() {
3+
this.ctype = "application/json";
4+
this.api = ["addclient", "getclients", "sendmessage", "getmessages", "addgroup", "getgroups"];
5+
this.server = null;
6+
this.secureUid = false;
7+
this.db = {
8+
users: {},
9+
groups: {
10+
all: [],
11+
},
12+
messages: {},
13+
};
14+
}
15+
16+
addServer(server) {
17+
var o = this;
18+
o.server = server;
19+
o.api.forEach((e) => server.addPathListener("api/" + e, o[e].bind(o)));
20+
}
21+
22+
setheaders(response) {
23+
if (response.__headers) response.__headers["content-type"] = this.ctype;
24+
}
25+
26+
pushdata(response, data) {
27+
this.setheaders(response);
28+
if (response.__rawdata) response.__rawdata.push(data);
29+
else response.__data.push(JSON.stringify(data));
30+
}
31+
32+
addclient(server, robj, routeData, request, response) {
33+
var o = this;
34+
var data = {},
35+
u = robj.vars.username;
36+
if (u) {
37+
data.err = 0;
38+
if (!o.db.users[u]) {
39+
o.db.users[u] = {
40+
vars: robj.vars,
41+
uid: server.rndstr(30),
42+
};
43+
data.username = u;
44+
data.uid = o.db.users[u].uid;
45+
data.text = "user added";
46+
o.db.groups.all.push(u);
47+
} else {
48+
data.text = "user exists";
49+
}
50+
} else {
51+
data.err = 1;
52+
data.text = "no username in request";
53+
}
54+
o.pushdata(response, data);
55+
}
56+
57+
getclients(server, robj, routeData, request, response) {
58+
var o = this;
59+
var data = {},
60+
g = robj.vars.group;
61+
if (g) {
62+
data.group = g;
63+
if (o.db.groups[g]) {
64+
data.err = 0;
65+
data.text = "existing users in group";
66+
data.users = o.db.groups[g];
67+
data.uids = {};
68+
if (!o.secureUid) data.users.forEach((e) => (data.uids[e] = o.db.users[e].uid));
69+
} else {
70+
data.err = 1;
71+
data.text = "no users in group";
72+
}
73+
} else {
74+
data.err = 0;
75+
data.text = "existing users";
76+
data.users = Object.keys(o.db.users);
77+
data.uids = {};
78+
if (!o.secureUid) data.users.forEach((e) => (data.uids[e] = o.db.users[e].uid));
79+
}
80+
o.pushdata(response, data);
81+
}
82+
83+
addmessage(user, msg) {
84+
var o = this;
85+
if (o.db.users[user]) {
86+
if (!o.db.messages[user]) o.db.messages[user] = [];
87+
o.db.messages[user].push(msg);
88+
} else user = null;
89+
90+
return user;
91+
}
92+
93+
sendmessage(server, robj, routeData, request, response) {
94+
var o = this;
95+
var data = {},
96+
g = robj.vars.group,
97+
t = robj.vars.target,
98+
u = robj.vars.username,
99+
m = robj.vars.message,
100+
uid = robj.vars.uid,
101+
msg,
102+
sent;
103+
104+
if (o.db.users[u] /* && (!o.secureUid || o.db.users[u].uid === uid)*/) {
105+
data.err = "0";
106+
data.text = "message sent";
107+
msg = {
108+
mid: server.rndstr(30),
109+
user: u,
110+
message: m,
111+
time: Date.now(),
112+
};
113+
if (g) {
114+
msg.group = g;
115+
if (o.db.groups[g]) sent = o.db.groups[g].map((gu) => o.addmessage(gu, msg));
116+
} else if (t) {
117+
sent = [o.addmessage(t, msg)];
118+
o.addmessage(u, msg);
119+
}
120+
sent = sent.filter((su) => su !== null);
121+
msg.sent = sent;
122+
if (robj.output) {
123+
robj.output.command = "addmessage";
124+
robj.output.message = msg;
125+
}
126+
data.sent = sent;
127+
} else {
128+
data.err = "1";
129+
data.text = "user uid mismatch";
130+
}
131+
132+
o.pushdata(response, data);
133+
}
134+
135+
getmessages(server, robj, routeData, request, response) {
136+
var o = this;
137+
var data = {},
138+
g = robj.vars.group,
139+
t = robj.vars.target,
140+
u = robj.vars.username,
141+
uid = robj.vars.uid;
142+
143+
if (o.db.users[u] /* && (!o.secureUid || o.db.users[u].uid === uid)*/) {
144+
data.err = 0;
145+
if (o.db.messages[u]) {
146+
if (g) data.messages = o.db.messages[u].filter((m) => m.group === g);
147+
else if (t)
148+
data.messages = o.db.messages[u].filter(
149+
(m) => !m.group && (m.user === t || (m.sent && m.sent.indexOf(t) !== -1))
150+
);
151+
else data.messages = o.db.messages[u];
152+
}
153+
} else {
154+
data.err = 1;
155+
data.text = "user uid mismatch";
156+
}
157+
158+
o.pushdata(response, data);
159+
}
160+
161+
addgroup(server, robj, routeData, request, response) {
162+
var o = this;
163+
var data = {},
164+
g = robj.vars.group,
165+
u = robj.vars.username,
166+
uid = robj.vars.uid;
167+
if (g) {
168+
data.err = 0;
169+
data.group = g;
170+
if (!o.db.groups[g]) o.db.groups[g] = [];
171+
if (u && o.db.users[u] && o.db.groups[g].indexOf(u) === -1) {
172+
if (true /*!o.secureUid || o.db.users[u].uid === uid*/) {
173+
o.db.groups[g].push(u);
174+
data.username = u;
175+
data.text = "user added to group";
176+
} else {
177+
data.text = "user uid mismatch";
178+
}
179+
} else {
180+
data.text = "group update";
181+
}
182+
} else {
183+
data.err = 1;
184+
data.text = "no group in request";
185+
}
186+
o.pushdata(response, data);
187+
}
188+
189+
getgroups(server, robj, routeData, request, response) {
190+
var o = this;
191+
var data = {};
192+
data.groups = Object.keys(o.db.groups);
193+
o.pushdata(response, data);
194+
}
195+
}
196+
197+
module.exports.APIController = APIController;
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
var htmlparser = require("zetaret.node.utils.html::HTMLParser"),
2+
htmlcache = require("zetaret.node.utils.html::HTMLCache");
3+
4+
class FrontEndController {
5+
constructor() {
6+
this.htcache = new htmlcache.HTMLCache();
7+
this.PAGES = {
8+
HOME: {
9+
id: "home",
10+
hfile: "./../html/apitest.html",
11+
},
12+
CHAT_BODY: {
13+
id: "chatbody",
14+
hfile: "./../html/chatbody.html",
15+
},
16+
};
17+
this.DEFAULT_PAGE = {
18+
dir: __dirname,
19+
useAutomaton: true,
20+
debug: true,
21+
closeTags: ["script", "style"],
22+
exe: {
23+
nowhite: true,
24+
pretty: true,
25+
swapjs: true,
26+
swapcss: true,
27+
despacejs: true,
28+
despacecss: true,
29+
render: this.htcache.defaultRenderTemplate,
30+
},
31+
};
32+
this.server = null;
33+
this.configPages();
34+
}
35+
36+
configPages() {
37+
var o = this;
38+
var p,
39+
watchers = o.htcache.getWatchers(null, 500, true, true);
40+
for (p in o.PAGES) {
41+
o.PAGES[p] = {
42+
...o.PAGES[p],
43+
...o.DEFAULT_PAGE,
44+
};
45+
}
46+
o.htcache.events.on(htmlcache.EVENTS.ADD_PAGE, (page, pdata, hc) => {
47+
console.log(page);
48+
pdata.parser.prettyPrefix = "";
49+
});
50+
o.htcache.setPages(o.PAGES, htmlparser.HTMLParser, watchers, true);
51+
}
52+
53+
addServer(server) {
54+
var o = this;
55+
o.server = server;
56+
server.addPathListener("", o.root.bind(o));
57+
server.addPathListener(o.PAGES.HOME.id, o.home.bind(o));
58+
}
59+
60+
root(server, robj, routeData, request, response) {
61+
var o = this;
62+
o.home(server, robj, routeData, request, response);
63+
}
64+
65+
home(server, robj, routeData, request, response) {
66+
var o = this;
67+
response.__headers["content-type"] = "text/html";
68+
response.__data.push(o.htcache.getStruct(o.PAGES.HOME.id));
69+
}
70+
}
71+
72+
module.exports.FrontEndController = FrontEndController;

0 commit comments

Comments
 (0)