node-gamedig/games/mumble.js

47 lines
1.1 KiB
JavaScript
Raw Normal View History

2014-02-02 14:20:36 +01:00
var async = require('async');
module.exports = require('./protocols/core').extend({
init: function() {
this._super();
this.pretty = 'Mumble';
this.options.port = 27800;
this.options.tcpTimeout = 5000;
},
run: function(state) {
var self = this;
2014-02-02 14:31:34 +01:00
this.tcpSend('json', function(buffer) {
2014-02-02 14:20:36 +01:00
if(buffer.length < 10) return;
var str = buffer.toString();
var json;
try {
json = JSON.parse(str);
} catch(e) {
// probably not all here yet
return;
}
state.raw = json;
state.name = json.name;
var channelStack = [state.raw.root];
while(channelStack.length) {
var channel = channelStack.shift();
channel.description = self.cleanComment(channel.description);
channelStack = channelStack.concat(channel.channels);
for(var i = 0; i < channel.users.length; i++) {
var user = channel.users[i];
user.comment = self.cleanComment(user.comment);
state.players.push(user);
}
}
self.finish(state);
return true;
});
},
cleanComment: function(str) {
return str.replace(/<.*>/g,'');
}
});