node-gamedig/protocols/fivem.js

53 lines
1.5 KiB
JavaScript
Raw Normal View History

const request = require('request'),
Quake2 = require('./quake2');
2018-02-13 11:07:31 +01:00
class FiveM extends Quake2 {
2017-08-10 13:49:42 +02:00
constructor() {
super();
this.sendHeader = 'getinfo xxx';
this.responseHeader = 'infoResponse';
2018-05-05 10:31:25 +02:00
this.encoding = 'utf8';
2017-08-10 13:49:42 +02:00
}
2018-02-13 11:07:31 +01:00
finish(state) {
request({
uri: 'http://'+this.options.address+':'+this.options.port_query+'/info.json',
timeout: this.options.socketTimeout
}, (e,r,body) => {
if(e) return this.fatal('HTTP error');
let json;
try {
json = JSON.parse(body);
} catch(e) {
return this.fatal('Invalid JSON');
}
state.raw.info = json;
request({
uri: 'http://'+this.options.address+':'+this.options.port_query+'/players.json',
timeout: this.options.socketTimeout
}, (e,r,body) => {
if(e) return this.fatal('HTTP error');
let json;
try {
json = JSON.parse(body);
} catch(e) {
return this.fatal('Invalid JSON');
}
state.raw.players = json;
state.players = [];
for (const player of json) {
state.players.push({name:player.name, ping:player.ping});
}
super.finish(state);
});
});
}
2017-08-10 13:49:42 +02:00
}
module.exports = FiveM;