Update adminController to use join/leave command wrappers
This commit is contained in:
@@ -7,6 +7,9 @@ const log = new DebugBuilder("server", "adminController");
|
||||
const mysqlHandler = require("../utilities/mysqlHandler");
|
||||
const utils = require("../utilities/utils");
|
||||
const requests = require("../utilities/httpRequests");
|
||||
const { leaveServerWrapper } = require("../commands/leave");
|
||||
const { joinServerWrapper } = require("../commands/join");
|
||||
|
||||
|
||||
/** Get the presets of all online nodes, can be used for functions
|
||||
*
|
||||
@@ -15,27 +18,10 @@ const requests = require("../utilities/httpRequests");
|
||||
*/
|
||||
async function getPresetsOfOnlineNodes(callback) {
|
||||
mysqlHandler.getOnlineNodes((onlineNodes) => {
|
||||
let systems = {};
|
||||
onlineNodes.forEach(onlineNode => {
|
||||
systems[onlineNode.id] = utils.BufferToJson(onlineNode.nearbySystems);
|
||||
});
|
||||
|
||||
return callback(systems);
|
||||
return callback(onlineNodes);
|
||||
});
|
||||
}
|
||||
|
||||
async function requestNodeListenToPreset(preset, nodeId, callback) {
|
||||
mysqlHandler.getNodeInfoFromId(nodeId, (nodeObject) =>{
|
||||
reqOptions = new requests.requestOptions("/bot/join", "POST", nodeObject.ip, nodeObject.port);
|
||||
requests.sendHttpRequest(reqOptions, JSON.stringify({
|
||||
"channelID": process.env.DEFAULT_VOICE_CHANNEL_ID,
|
||||
"presetName": preset
|
||||
}), (responseObject) => {
|
||||
return callback(responseObject)
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
async function getNodeBotStatus(nodeId, callback) {
|
||||
mysqlHandler.getNodeInfoFromId(nodeId, (nodeObject) =>{
|
||||
reqOptions = new requests.requestOptions("/bot/status", "GET", nodeObject.ip, nodeObject.port, undefined, 5);
|
||||
@@ -51,24 +37,6 @@ async function getNodeBotStatus(nodeId, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
async function requestNodeLeaveServer(nodeId, callback) {
|
||||
getNodeBotStatus(nodeId, (responseObject) => {
|
||||
if (responseObject === false) {
|
||||
// Bot is joined
|
||||
mysqlHandler.getNodeInfoFromId(nodeId, (nodeObject) =>{
|
||||
reqOptions = new requests.requestOptions("/bot/leave", "POST", nodeObject.ip, nodeObject.port);
|
||||
requests.sendHttpRequest(reqOptions, JSON.stringify({}), (responseObject) => {
|
||||
return callback(responseObject);
|
||||
});
|
||||
});
|
||||
}
|
||||
else {
|
||||
// Bot is free
|
||||
return callback(false);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/** Return to requests for the presets of all online nodes, cannot be used in functions
|
||||
*
|
||||
@@ -87,43 +55,39 @@ exports.getAvailablePresets = async (req, res) => {
|
||||
*
|
||||
* @param {*} req Express request parameter
|
||||
* @var {*} req.body.preset The preset to join (REQ)
|
||||
* @var {*} req.body.nodeId The specific node to join (OPT/REQ if more than one node has the preset)
|
||||
* @var {*} req.body.nodeId The specific node to join (OPT/REQ if more than one node has the preset)
|
||||
* @var {*} req.body.clientId The ID of the client that we want to join with
|
||||
* @var {*} req.body.channelId The channel Id of the discord channel to join
|
||||
* @param {*} res Express response parameter
|
||||
*/
|
||||
exports.joinPreset = async (req, res) => {
|
||||
if (!req.body.preset) return res.status(400).json("No preset specified");
|
||||
await getPresetsOfOnlineNodes((systems) => {
|
||||
const systemsWithSelectedPreset = Object.values(systems).filter(nodePresets => nodePresets.includes(req.body.preset)).length
|
||||
if (!systemsWithSelectedPreset) return res.status(400).json("No system online with that preset");
|
||||
if (systemsWithSelectedPreset > 1) {
|
||||
if (!req.body.nodeId) return res.status(175).json("Multiple locations with the selected channel, please specify a nodeID (nodeId)")
|
||||
requestNodeListenToPreset(req.body.preset, req.body.nodeId, (responseObject) => {
|
||||
if (responseObject === false) return res.status(400).json("Timeout reached");
|
||||
return res.sendStatus(responseObject.statusCode);
|
||||
});
|
||||
}
|
||||
else {
|
||||
let nodeId;
|
||||
if (!req.body.nodeId) nodeId = utils.getKeyByArrayValue(systems, req.body.preset);
|
||||
else nodeId = req.body.nodeId;
|
||||
requestNodeListenToPreset(req.body.preset, nodeId, (responseObject) => {
|
||||
if (responseObject === false) return res.status(400).json("Timeout reached");
|
||||
return res.sendStatus(responseObject.statusCode);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (!req.body.preset) return res.status(400).json("No preset specified");
|
||||
if (!req.body.nodeId) return res.status(400).json("No node ID specified");
|
||||
if (!req.body.clientId) return res.status(400).json("No client ID specified");
|
||||
if (!req.body.channelId) return res.status(400).json("No channel ID specified");
|
||||
|
||||
const preset = req.body.preset;
|
||||
const nodeId = req.body.nodeId;
|
||||
const clientId = req.body.clientId;
|
||||
const channelId = req.body.channelId;
|
||||
|
||||
const joinedClient = await joinServerWrapper(preset, channelId, clientId, nodeId);
|
||||
if (!joinedClient) return res.send(400).json("No joined client");
|
||||
return res.send(200).json(joinedClient);
|
||||
}
|
||||
|
||||
/** Request a node to join the server listening to a specific preset
|
||||
*
|
||||
* @param {*} req Express request parameter
|
||||
* @param {*} res Express response parameter
|
||||
* @var {*} req.body.clientId The ID of the client to disconnect
|
||||
*/
|
||||
exports.leaveServer = async (req, res) => {
|
||||
if (!req.body.nodeId) return res.status(400).json("No nodeID specified");
|
||||
if (!req.body.clientId) return res.status(400).json("No clientID specified");
|
||||
|
||||
requestNodeLeaveServer(req.body.nodeId, (responseObject) => {
|
||||
if (responseObject === false) return res.status(400).json("Bot not joined to server");
|
||||
return res.sendStatus(responseObject.statusCode);
|
||||
});
|
||||
const clientId = req.body.clientId;
|
||||
|
||||
await leaveServerWrapper(clientId)
|
||||
|
||||
return res.send(200);
|
||||
}
|
||||
Reference in New Issue
Block a user