Skip to content

Commit 049c701

Browse files
committed
Bit of structuring, plus genericising "communicator" instead of "badge".
1 parent e3039fd commit 049c701

File tree

2 files changed

+85
-33
lines changed

2 files changed

+85
-33
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: 80 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -163,43 +163,54 @@ 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);
199+
<<<<<<< HEAD
193200
return responder.send(`Badge ${request.params.badgeMAC} is not registered on the server.`);
194201
}
202+
=======
203+
return responder.send(`Badge ${request.params.communicatorMAC} is not registered on the server.`);
204+
};
205+
>>>>>>> 4cc513d (Bit of structuring, plus genericising "communicator" instead of "badge".)
195206
if (!("targetMAC" in request.body)) {
196207
responder.status(400);
197208
return responder.send("Request body must be either empty or contain string values userName and prettyName.");
198209
} else if (!(request.body["targetMAC"] in activeBadges)) {
199210
responder.status(404);
200211
return responder.send(`Badge ${request.body["targetMAC"]} is not registered on the server.`);
201212
} else {
202-
var initiator = activeBadges[request.params.badgeMAC];
213+
var initiator = activeBadges[request.params.communicatorMAC];
203214
var target = activeBadges[request.body["targetMAC"]];
204215
initiator.callRTP(target.IP, 5200);
205216
target.callRTP(initiator.IP, 5200);
@@ -208,33 +219,47 @@ app.post('/badges/:badgeMAC/callTarget', (request, responder) => {
208219
return responder.send([true]);
209220
});
210221

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)) {
222+
app.post('/communicators/:communicatorMAC/user', (request, responder) => {
223+
if (!(request.params.communicatorMAC in activeBadges)) {
219224
responder.status(404);
220-
return responder.send(`Badge ${request.params.badgeMAC} is not registered on the server.`);
225+
return responder.send(`Badge ${request.params.communicatorMAC} is not registered on the server.`);
221226
};
222227
if (("userName" in request.body) && ("prettyName" in request.body)) {
223-
return responder.send(activeBadges[request.params.badgeMAC].externalCallback("login", request.body));
228+
return responder.send(activeBadges[request.params.communicatorMAC].externalCallback("login", request.body));
224229
} else {
225230
responder.status(400);
226231
return responder.send("Request body must contain string values userName and prettyName.");
227232
};
228233
});
229234

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

243+
/**
244+
* This section deals with Group Management calls.
245+
*/
246+
app.get('/groups', (request, responder) => {
247+
return responder.send(["Not Implemented"]);
248+
});
249+
250+
app.get('/groups/:userName', (request, responder) => {
251+
return responder.send(["Not Implemented"]);
252+
});
253+
254+
app.post('/groups/:groupName', (request, responder) => {
255+
return responder.send(["Not Implemented"]);
256+
});
257+
258+
app.delete('groups/:groupName', (request, responder) => {
259+
return responder.send(["Not Implemented"]);
260+
});
261+
262+
238263
/**
239264
* This section deals with User Management calls.
240265
*/
@@ -246,7 +271,34 @@ app.get('/users/:userName', (request, responder) => {
246271
return responder.send(["Not Implemented"]);
247272
});
248273

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

296+
/**
297+
* This at least is relatively straightforward - remove the MAC from the user object and logout the corresponding devices.
298+
*/
299+
app.delete('/users/:userName/communicators/:communicatorMAC', (request, responder) => {
300+
return responder.send(["Not Implemented"]);
301+
});
250302

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

0 commit comments

Comments
 (0)