This commit is contained in:
2021-04-23 15:36:10 +02:00
parent 288927e74c
commit 6d0937813b
4 changed files with 88 additions and 17 deletions

View File

@@ -1,13 +1,23 @@
import { NodeMessageInFlow } from "node-red";
import { TeamSpeak } from "ts3-nodejs-library"; import { TeamSpeak } from "ts3-nodejs-library";
import { GetFunctions } from "./types";
export default async function handleGet(func: GetFunctions, client: TeamSpeak, options: any): Promise<any>{ export default function handleGet(func: string, client: TeamSpeak, options: any): Promise<any>{
switch (func) { const member: any = client[func as keyof TeamSpeak]
case GetFunctions.CLIENTS_LIST:
return client.clientList(options) if (typeof member === "function"){
let rtn;
default: if (options instanceof Array){
break; rtn = member(...options)
}else{
rtn = member(options)
}
if (rtn instanceof Promise){
return rtn
}else{
return rtn
}
}else{
throw new Error(`"${func}" is not a valid function name`);
} }
} }

View File

@@ -1,7 +1,7 @@
import { NodeInitializer } from "node-red"; import { NodeInitializer } from "node-red";
import { Ts3ConfigNode } from "../ts3-config/types"; import { Ts3ConfigNode } from "../ts3-config/types";
import handleGet from "./handleGet"; import handleGet from "./handleGet";
import { GetFunctions, Ts3GetConfig, Ts3GetNode } from "./types"; import { Ts3GetConfig, Ts3GetNode } from "./types";
const nodeInit: NodeInitializer = (RED): void => { const nodeInit: NodeInitializer = (RED): void => {
function Ts3Get( function Ts3Get(
@@ -28,8 +28,9 @@ const nodeInit: NodeInitializer = (RED): void => {
this.on("input", async (msg,send,done) => { this.on("input", async (msg,send,done) => {
const client = await ts3Config.getConnection() const client = await ts3Config.getConnection()
let payload = await handleGet(GetFunctions.CLIENTS_LIST,client,msg.payload) let payload = await handleGet(config.selection,client,msg.payload)
//let payload = await client.whoami()
msg.payload = payload msg.payload = payload
send(msg) send(msg)

View File

@@ -1,5 +1,4 @@
import { NodeDef, Node, EditorNodeProperties } from "node-red"; import { NodeDef, Node, EditorNodeProperties } from "node-red";
import { Ts3ConfigNode } from "../ts3-config/types";
export interface Ts3GetProps { export interface Ts3GetProps {
configid: string configid: string
@@ -14,7 +13,3 @@ export interface Ts3GetConfig extends NodeDef, Ts3GetProps { }
export interface Ts3GetNode extends Node, Ts3GetData {} export interface Ts3GetNode extends Node, Ts3GetData {}
export interface Ts3GetEditorNodeProperties extends EditorNodeProperties,Ts3GetProps {} export interface Ts3GetEditorNodeProperties extends EditorNodeProperties,Ts3GetProps {}
export enum GetFunctions {
CLIENTS_LIST,
}

View File

@@ -9,6 +9,71 @@
<div class="form-row"> <div class="form-row">
<label for="node-input-configid"><i class="fa fa-database"></i> Connection</label> <label for="node-input-configid"><i class="fa fa-database"></i> Connection</label>
<select class="form-select" id="node-input-selection"> <select class="form-select" id="node-input-selection">
<option selected>Open this select menu</option> <option value="version" selected>version</option>
<option value="apiKeyList">apiKeyList</option>
<option value="hostInfo">hostInfo</option>
<option value="instanceInfo">instanceInfo</option>
<option value="bindingList">bindingList</option>
<option value="whoami">whoami</option>
<option value="serverInfo">serverInfo</option>
<option value="serverIdGetByPort">serverIdGetByPort</option>
<option value="connectionInfo">connectionInfo</option>
<option value="serverGroupClientList">serverGroupClientList</option>
<option value="serverGroupsByClientId">serverGroupsByClientId</option>
<option value="serverGroupPermList">serverGroupPermList</option>
<option value="serverTempPasswordList">serverTempPasswordList</option>
<option value="getChannelById">getChannelById</option>
<option value="channelPermList">channelPermList</option>
<option value="getClientById">getClientById</option>
<option value="getChannelByName">getChannelByName</option>
<option value="channelFind">channelFind</option>
<option value="channelInfo">channelInfo</option>
<option value="getClientByDbid">getClientByDbid</option>
<option value="getClientByUid">getClientByUid</option>
<option value="getClientByName">getClientByName</option>
<option value="clientInfo">clientInfo</option>
<option value="clientDbList">clientDbList</option>
<option value="clientDbInfo">clientDbInfo</option>
<option value="clientPermList">clientPermList</option>
<option value="customSearch">customSearch</option>
<option value="customInfo">customInfo</option>
<option value="getServerGroupById">getServerGroupById</option>
<option value="getServerGroupByName">getServerGroupByName</option>
<option value="getChannelGroupById">getChannelGroupById</option>
<option value="getChannelGroupByName">getChannelGroupByName</option>
<option value="setClientChannelGroup">setClientChannelGroup</option>
<option value="channelGroupPermList">channelGroupPermList</option>
<option value="channelGroupClientList">channelGroupClientList</option>
<option value="permOverview">permOverview</option>
<option value="permissionList">permissionList</option>
<option value="permIdGetByName">permIdGetByName</option>
<option value="permIdsGetByName">permIdsGetByName</option>
<option value="permGet">permGet</option>
<option value="permFind">permFind</option>
<option value="privilegeKeyList">privilegeKeyList</option>
<option value="messageList">messageList</option>
<option value="messageGet">messageGet</option>
<option value="complainList">complainList</option>
<option value="banList">banList</option>
<option value="logView">logView</option>
<option value="clientFind">clientFind</option>
<option value="clientGetIds">clientGetIds</option>
<option value="clientGetDbidFromUid">clientGetDbidFromUid</option>
<option value="clientGetNameFromUid">clientGetNameFromUid</option>
<option value="clientGetUidFromClid">clientGetUidFromClid</option>
<option value="clientGetNameFromDbid">clientGetNameFromDbid</option>
<option value="clientDbFind">clientDbFind</option>
<option value="serverList">serverList</option>
<option value="channelClientPermList">channelClientPermList</option>
<option value="channelGroupList">channelGroupList</option>
<option value="serverGroupList">serverGroupList</option>
<option value="channelList">channelList</option>
<option value="clientList">clientList</option>
<option value="ftList">ftList</option>
<option value="ftGetFileList">ftGetFileList</option>
<option value="ftGetFileInfo">ftGetFileInfo</option>
<option value="downloadFile">downloadFile</option>
<option value="downloadIcon">downloadIcon</option>
<option value="getIconId">getIconId</option>
</select> </select>
</div> </div>