diff --git a/package.json b/package.json index 16a3e7b..4d9ba9f 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,6 @@ "name": "node-red-contrib-gamedig", "version": "0.1.0", "description": "Query for the status of any game server using node-red", - "main": "query-game-server/query-game-server.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, "repository": { "type": "git", "url": "git+https://github.com/skylord123/node-red-contrib-gamedig.git" @@ -18,10 +14,10 @@ "homepage": "https://github.com/skylord123/node-red-contrib-gamedig#readme", "node-red": { "nodes": { - "query-game-server": "query-game-server/query-game-server.js" + "query-game-server": "query-game-server.js" } }, "dependencies": { - "gamedig": "^2.0.13" + "gamedig": "^2.0.0" } } diff --git a/query-game-server.html b/query-game-server.html new file mode 100644 index 0000000..29b55d7 --- /dev/null +++ b/query-game-server.html @@ -0,0 +1,107 @@ + + + + + \ No newline at end of file diff --git a/query-game-server.js b/query-game-server.js new file mode 100644 index 0000000..75f169e --- /dev/null +++ b/query-game-server.js @@ -0,0 +1,54 @@ +var Gamedig = require('gamedig'); + +module.exports = function(RED) { + function QueryGameServer(config) { + RED.nodes.createNode(this, config); + this.server_type = config.server_type; + this.host = config.host; + this.port = config.port; + this.halt_if = config.halt_if; + var node = this; + node.on('input', function(msg) { + var serverInfo = { + 'type': node.server_type, + 'host': node.host + }; + + if(node.port) { + serverInfo['port'] = node.port; + } + + if(msg.server_type) { + serverInfo['type'] = msg.server_type; + } + + if(msg.host) { + serverInfo['host'] = msg.host; + } + + if(msg.port) { + serverInfo['port'] = msg.port; + } + + Gamedig.query(serverInfo) + .then(function(state) { + msg.payload = 'online'; + msg.data = state; + if (msg.payload === node.halt_if) { + return null; + } + node.send(msg); + }).catch(function(error) { + msg.payload = 'offline'; + msg.data = { + 'error': error + }; + if (msg.payload === node.halt_if) { + return null; + } + node.send(msg); + }); + }); + } + RED.nodes.registerType("query-game-server", QueryGameServer); +}; \ No newline at end of file diff --git a/query-game-server/query-game-server.html b/query-game-server/query-game-server.html deleted file mode 100644 index b50788b..0000000 --- a/query-game-server/query-game-server.html +++ /dev/null @@ -1,47 +0,0 @@ - - - \ No newline at end of file diff --git a/query-game-server/query-game-server.js b/query-game-server/query-game-server.js deleted file mode 100644 index eca222c..0000000 --- a/query-game-server/query-game-server.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = function(RED) { - var Gamedig = require('gamedig'); - function queryGameServer(config) { - RED.nodes.createNode(this, config); - var node = this; - node.on('input', function(msg) { - var serverInfo = { - 'type': this.nodeConfig.type, - 'host': this.nodeConfig.host - }; - - if(this.nodeConfig.port) { - serverInfo['port'] = this.nodeConfig.port; - } - - Gamedig.query(serverInfo) - .then(function(state) { - msg.payload = 'online'; - msg.data = state; - const shouldHaltIfState = this.nodeConfig.halt_if && ('online' === this.nodeConfig.halt_if); - if (shouldHaltIfState) { - return null; - } - node.send(msg); - }).catch(function(error) { - msg.payload = 'offline'; - msg.data = { - 'error': error - }; - const shouldHaltIfState = this.nodeConfig.halt_if && ('offline' === this.nodeConfig.halt_if); - if (shouldHaltIfState) { - return null; - } - node.send(msg); - }); - }); - } - RED.nodes.registerType("query-game-server", queryGameServer); -}; \ No newline at end of file