Skip to content

Commit 74574af

Browse files
committed
Bit of structuring, plus genericising "communicator" instead of "badge".
1 parent 527a443 commit 74574af

File tree

2 files changed

+76
-26
lines changed

2 files changed

+76
-26
lines changed

Models/user.mjs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,19 @@
3939
userName: "u-fallbackuser", // Globally unique ID
4040
fullName: new UserFullName(foreName = "Fallback", familyName = "User", nickName = "Fallback User"),
4141
ipaPronunciation: "fɔːlbæk ˈjuːzə", // Not currently in use for STT or TTS but worth adding.
42-
associatedGroups: [],
42+
groups: [],
4343

44-
assignedDevices: ["ba:dg:em:ac:ad:dr"], // Optional, for autologin/whitelisting
45-
personalTerminals: ["te:rm:in:al:ma:cs"] // Being vidcom terminals that can be used to make video calls.
44+
communicators: ["ba:dg:em:ac:ad:dr"], // Optional, for autologin/whitelisting
45+
terminals: ["te:rm:in:al:ma:cs"] // Being vidcom terminals that can be used to make video calls.
4646
};
4747

4848
groupTemplate = {
4949
groupName: "g-allhands",
5050
nickName: "All Hands",
5151
ipaPronunciation: "ɔːl hændz", // Not currently in use for STT or TTS but worth adding.
52-
associatedUsers: [],
52+
users: [],
5353

54-
assignedAddress: "Placeholder for multicast IPAddress Object"
54+
address: "Placeholder for multicast IPAddress Object"
5555
};
5656

5757

combadged.js

Lines changed: 71 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -154,57 +154,77 @@ app.use(express.json());
154154
* API calls for managing the system. Style note: follow whole-parent ordering instead of whole method ordering. E.G.
155155
*
156156
* get /
157-
* get /badges/
158-
* get /badges/badge
159-
* del /badges/badge
160-
* get /badges/badge/callTarget
161-
* pst /badges/badge/callTarget
162-
* del /badges/badge/callTarget
163-
* pst /badges/badge/user
157+
* get /communicators/
158+
* get /communicators/badge
159+
* del /communicators/badge
160+
* get /communicators/badge/callTarget
161+
* pst /communicators/badge/callTarget
162+
* del /communicators/badge/callTarget
163+
* pst /communicators/badge/user
164164
* get /users/
165165
*/
166166
app.get('/', (request, responder) => {
167-
return responder.send(["badges", "users"]);
167+
return responder.send(["badges", "groups", "terminals", "users"]);
168168
});
169169

170170
/**
171171
* This section deals with Combadge calls.
172172
*/
173-
app.get('/badges', (request, responder) => {
173+
app.get('/communicators', (request, responder) => {
174174
return responder.send(Object.keys(activeBadges));
175175
});
176176

177-
app.get('/badges/:badgeMAC', (request, responder) => {
178-
return responder.send(activeBadges[request.params.badgeMAC]);
177+
app.get('/communicators/:communicatorMAC', (request, responder) => {
178+
return responder.send(activeBadges[request.params.communicatorMAC]);
179179
});
180180

181-
app.delete('/badges/:badgeMAC', (request, responder) => {
181+
app.delete('/communicators/:communicatorMAC', (request, responder) => {
182182
return responder.send(function () {
183-
delete activeBadges[request.params.badgeMAC]
183+
delete activeBadges[request.params.communicatorMAC]
184184
});
185185
});
186186

187-
app.post('/badges/:badgeMAC/user', (request, responder) => {
188-
if (!(request.params.badgeMAC in activeBadges)) {
187+
app.post('/communicators/:communicatorMAC/user', (request, responder) => {
188+
if (!(request.params.communicatorMAC in activeBadges)) {
189189
responder.status(404);
190-
return responder.send(`Badge ${request.params.badgeMAC} is not registered on the server.`);
190+
return responder.send(`Badge ${request.params.communicatorMAC} is not registered on the server.`);
191191
};
192192
if (("userName" in request.body) && ("prettyName" in request.body)) {
193-
return responder.send(activeBadges[request.params.badgeMAC].externalCallback("login", request.body));
193+
return responder.send(activeBadges[request.params.communicatorMAC].externalCallback("login", request.body));
194194
} else {
195195
responder.status(400);
196196
return responder.send("Request body must contain string values userName and prettyName.");
197197
};
198198
});
199199

200-
app.delete('/badges/:badgeMAC/user'), (request, responder) => {
201-
if (!(request.params.badgeMAC in activeBadges)) {
200+
app.delete('/communicators/:communicatorMAC/user'), (request, responder) => {
201+
if (!(request.params.communicatorMAC in activeBadges)) {
202202
responder.status(404);
203-
return responder.send(`Badge ${request.params.badgeMAC} is not registered on the server.`);
203+
return responder.send(`Badge ${request.params.communicatorMAC} is not registered on the server.`);
204204
};
205-
return responder.send(activeBadges[request.params.badgeMAC].externalCallback("logout"));
205+
return responder.send(activeBadges[request.params.communicatorMAC].externalCallback("logout"));
206206
};
207207

208+
/**
209+
* This section deals with Group Management calls.
210+
*/
211+
app.get('/groups', (request, responder) => {
212+
return responder.send(["Not Implemented"]);
213+
});
214+
215+
app.get('/groups/:userName', (request, responder) => {
216+
return responder.send(["Not Implemented"]);
217+
});
218+
219+
app.post('/groups/:groupName', (request, responder) => {
220+
return responder.send(["Not Implemented"]);
221+
});
222+
223+
app.delete('groups/:groupName', (request, responder) => {
224+
return responder.send(["Not Implemented"]);
225+
});
226+
227+
208228
/**
209229
* This section deals with User Management calls.
210230
*/
@@ -216,6 +236,36 @@ app.get('/users/:userName', (request, responder) => {
216236
return responder.send(["Not Implemented"]);
217237
});
218238

239+
app.post('/users/:userName', (request, responder) => {
240+
return responder.send(["Not Implemented"]);
241+
});
242+
243+
app.delete('/users/:userName', (request, responder) => {
244+
return responder.send(["Not Implemented"]);
245+
});
246+
247+
/**
248+
* Maybe return a 300-series temporary redirect here, to point people at the right badge object?
249+
*/
250+
app.get('/users/:userName/communicators/:communicatorMAC', (request, responder) => {
251+
return responder.send(["Not Implemented"]);
252+
});
253+
254+
/**
255+
* How do you refer an object to another object in a REST api? Need to research correct style.
256+
*/
257+
app.post('/users/:userName/communicators/:communicatorMAC', (request, responder) => {
258+
return responder.send(["Not Implemented"]);
259+
});
260+
261+
/**
262+
* This at least is relatively straightforward - remove the MAC from the user object and logout the corresponding devices.
263+
*/
264+
app.delete('/users/:userName/communicators/:communicatorMAC', (request, responder) => {
265+
return responder.send(["Not Implemented"]);
266+
});
267+
268+
219269

220270

221271
app.listen(apiPort, () =>

0 commit comments

Comments
 (0)