Skip to content

Commit 4cc513d

Browse files
committed
Bit of structuring, plus genericising "communicator" instead of "badge".
1 parent d2a8438 commit 4cc513d

File tree

2 files changed

+81
-34
lines changed

2 files changed

+81
-34
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: 76 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -163,34 +163,40 @@ app.use(express.json());
163163
* API calls for managing the system. Style note: follow whole-parent ordering instead of whole method ordering. E.G.
164164
*
165165
* get /
166-
* get /badges/
167-
* get /badges/badge
168-
* del /badges/badge
169-
* get /badges/badge/callTarget
170-
* pst /badges/badge/callTarget
171-
* del /badges/badge/callTarget
172-
* pst /badges/badge/user
166+
* get /communicators/
167+
* get /communicators/badge
168+
* del /communicators/badge
169+
* get /communicators/badge/callTarget
170+
* pst /communicators/badge/callTarget
171+
* del /communicators/badge/callTarget
172+
* pst /communicators/badge/user
173173
* get /users/
174174
*/
175175
app.get('/', (request, responder) => {
176-
return responder.send(["badges", "users"]);
176+
return responder.send(["badges", "groups", "terminals", "users"]);
177177
});
178178

179179
/**
180180
* This section deals with Combadge calls.
181181
*/
182-
app.get('/badges', (request, responder) => {
182+
app.get('/communicators', (request, responder) => {
183183
return responder.send(Object.keys(activeBadges));
184184
});
185185

186-
app.get('/badges/:badgeMAC', (request, responder) => {
187-
return responder.send(activeBadges[request.params.badgeMAC]);
186+
app.get('/communicators/:communicatorMAC', (request, responder) => {
187+
return responder.send(activeBadges[request.params.communicatorMAC]);
188188
});
189189

190-
app.post('/badges/:badgeMAC/callTarget', (request, responder) => {
191-
if (!(request.params.badgeMAC in activeBadges)) {
190+
app.delete('/communicators/:communicatorMAC', (request, responder) => {
191+
return responder.send(function () {
192+
delete activeBadges[request.params.communicatorMAC]
193+
});
194+
});
195+
196+
app.post('/communicators/:communicatorMAC/callTarget', (request, responder) => {
197+
if (!(request.params.communicatorMAC in activeBadges)) {
192198
responder.status(404);
193-
return responder.send(`Badge ${request.params.badgeMAC} is not registered on the server.`);
199+
return responder.send(`Badge ${request.params.communicatorMAC} is not registered on the server.`);
194200
};
195201
if (!("targetMAC" in request.body)) {
196202
responder.status(400);
@@ -199,7 +205,7 @@ app.post('/badges/:badgeMAC/callTarget', (request, responder) => {
199205
responder.status(404);
200206
return responder.send(`Badge ${request.body["targetMAC"]} is not registered on the server.`);
201207
} else {
202-
var initiator = activeBadges[request.params.badgeMAC];
208+
var initiator = activeBadges[request.params.communicatorMAC];
203209
var target = activeBadges[request.body["targetMAC"]];
204210
initiator.callRTP(target.IP, 5200);
205211
target.callRTP(initiator.IP, 5200);
@@ -208,33 +214,47 @@ app.post('/badges/:badgeMAC/callTarget', (request, responder) => {
208214
return responder.send([true]);
209215
});
210216

211-
app.delete('/badges/:badgeMAC', (request, responder) => {
212-
return responder.send(function () {
213-
delete activeBadges[request.params.badgeMAC]
214-
});
215-
});
216-
217-
app.post('/badges/:badgeMAC/user', (request, responder) => {
218-
if (!(request.params.badgeMAC in activeBadges)) {
217+
app.post('/communicators/:communicatorMAC/user', (request, responder) => {
218+
if (!(request.params.communicatorMAC in activeBadges)) {
219219
responder.status(404);
220-
return responder.send(`Badge ${request.params.badgeMAC} is not registered on the server.`);
220+
return responder.send(`Badge ${request.params.communicatorMAC} is not registered on the server.`);
221221
};
222222
if (("userName" in request.body) && ("prettyName" in request.body)) {
223-
return responder.send(activeBadges[request.params.badgeMAC].externalCallback("login", request.body));
223+
return responder.send(activeBadges[request.params.communicatorMAC].externalCallback("login", request.body));
224224
} else {
225225
responder.status(400);
226226
return responder.send("Request body must contain string values userName and prettyName.");
227227
};
228228
});
229229

230-
app.delete('/badges/:badgeMAC/user'), (request, responder) => {
231-
if (!(request.params.badgeMAC in activeBadges)) {
230+
app.delete('/communicators/:communicatorMAC/user'), (request, responder) => {
231+
if (!(request.params.communicatorMAC in activeBadges)) {
232232
responder.status(404);
233-
return responder.send(`Badge ${request.params.badgeMAC} is not registered on the server.`);
233+
return responder.send(`Badge ${request.params.communicatorMAC} is not registered on the server.`);
234234
};
235-
return responder.send(activeBadges[request.params.badgeMAC].externalCallback("logout"));
235+
return responder.send(activeBadges[request.params.communicatorMAC].externalCallback("logout"));
236236
};
237237

238+
/**
239+
* This section deals with Group Management calls.
240+
*/
241+
app.get('/groups', (request, responder) => {
242+
return responder.send(["Not Implemented"]);
243+
});
244+
245+
app.get('/groups/:userName', (request, responder) => {
246+
return responder.send(["Not Implemented"]);
247+
});
248+
249+
app.post('/groups/:groupName', (request, responder) => {
250+
return responder.send(["Not Implemented"]);
251+
});
252+
253+
app.delete('groups/:groupName', (request, responder) => {
254+
return responder.send(["Not Implemented"]);
255+
});
256+
257+
238258
/**
239259
* This section deals with User Management calls.
240260
*/
@@ -246,7 +266,34 @@ app.get('/users/:userName', (request, responder) => {
246266
return responder.send(["Not Implemented"]);
247267
});
248268

269+
app.post('/users/:userName', (request, responder) => {
270+
return responder.send(["Not Implemented"]);
271+
});
249272

273+
app.delete('/users/:userName', (request, responder) => {
274+
return responder.send(["Not Implemented"]);
275+
});
276+
277+
/**
278+
* Maybe return a 300-series temporary redirect here, to point people at the right badge object?
279+
*/
280+
app.get('/users/:userName/communicators/:communicatorMAC', (request, responder) => {
281+
return responder.send(["Not Implemented"]);
282+
});
283+
284+
/**
285+
* How do you refer an object to another object in a REST api? Need to research correct style.
286+
*/
287+
app.post('/users/:userName/communicators/:communicatorMAC', (request, responder) => {
288+
return responder.send(["Not Implemented"]);
289+
});
290+
291+
/**
292+
* This at least is relatively straightforward - remove the MAC from the user object and logout the corresponding devices.
293+
*/
294+
app.delete('/users/:userName/communicators/:communicatorMAC', (request, responder) => {
295+
return responder.send(["Not Implemented"]);
296+
});
250297

251298
app.listen(apiPort, () =>
252299
console.log(`Combadge control REST API now active on TCP port ${apiPort}!`),

0 commit comments

Comments
 (0)