jka-core
Version:
Library for working with Jedi Academy servers
64 lines (63 loc) • 3.05 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.rconStatus = void 0;
const __1 = require("../..");
const rconStatusBase_parser_1 = require("../../utils/parsers/rconStatus/rconStatusBase.parser");
const rconStatusJapro_parser_1 = require("../../utils/parsers/rconStatus/rconStatusJapro.parser");
const rconStatusYbeproxy_parser_1 = require("../../utils/parsers/rconStatus/rconStatusYbeproxy.parser");
const rconBasic_request_1 = require("./rconBasic.request");
const rconStatusOpenjk_parser_1 = require("../../utils/parsers/rconStatus/rconStatusOpenjk.parser");
function rconStatus(server, rconpassword, timeout) {
return __awaiter(this, void 0, void 0, function* () {
let strToParse = '';
try {
strToParse = yield (0, rconBasic_request_1.rconBasicRequest)({ cmd: 'status', server, rconpassword, timeout });
}
catch (error) {
console.error('RconStatus Request failed:');
console.error(error);
throw error;
}
const serverType = defineTheServerType(strToParse);
switch (serverType) {
case __1.EServerTypes.BASE:
return (0, rconStatusBase_parser_1.rconStatusBaseParser)(strToParse);
case __1.EServerTypes.JAPRO:
return (0, rconStatusJapro_parser_1.rconStatusJaproParser)(strToParse);
case __1.EServerTypes.YBEPROXY:
return (0, rconStatusYbeproxy_parser_1.rconStatusYbeproxyParser)(strToParse);
case __1.EServerTypes.OPENJK:
return (0, rconStatusOpenjk_parser_1.rconStatusOpenjkParser)(strToParse);
default:
throw new Error('Unknown server type!');
}
});
}
exports.rconStatus = rconStatus;
function defineTheServerType(strToCheck) {
let lines = strToCheck.split('\n');
if (lines.length < 2)
throw new Error('No information provided!');
lines = lines.filter(x => x !== '');
if (!lines.some(line => line.startsWith('hostname'))) {
return __1.EServerTypes.BASE;
}
else if (lines.some(line => line.startsWith('uptime'))) {
return __1.EServerTypes.JAPRO;
}
else if (lines.some(line => line.startsWith('version'))) {
return __1.EServerTypes.OPENJK;
}
else {
return __1.EServerTypes.YBEPROXY;
}
}