observermc-client
Version:
Client API for ObserverMC wrapper
159 lines (158 loc) • 5.91 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.ObserverClient = exports.Status = void 0;
const socket_io_client_1 = require("socket.io-client");
const util_1 = require("../util");
var Status;
(function (Status) {
Status["Offline"] = "offline";
Status["Starting"] = "starting";
Status["Online"] = "online";
Status["Stopping"] = "stopping";
})(Status = exports.Status || (exports.Status = {}));
class ObserverClient {
constructor(_options) {
this._options = _options;
this._isReady = false;
this._events = {
connect: (error) => { },
disconnect: () => { },
};
this._socket = socket_io_client_1.io(_options.url, { autoConnect: false });
// Connect event
this._socket.on("connect", () => __awaiter(this, void 0, void 0, function* () {
let connected = false;
let errorCode;
try {
connected = yield this.authenticate();
}
catch (error) {
errorCode = error;
}
this._isReady = connected;
this._events["connect"](errorCode);
}));
// Disconnect event
this._socket.on("disconnect", () => {
this._events["disconnect"]();
});
}
/** Connects to the ObserverMC Server */
connect() {
util_1.Logger.log("Connecting to " + this._options.url);
this._socket.connect();
}
on(event, callbackFn) {
this._events[event] = callbackFn;
this._socket.on("event:" + event, this._events[event]);
}
/** Start a server */
start(serverName) {
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
try {
yield this.authenticate();
}
catch (error) { }
this._socket.emit("start", serverName, (success, error) => {
if (error) {
reject(error);
return;
}
resolve(success);
});
}));
}
/** Stop a server */
stop(serverName) {
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
yield this.authenticate();
this._socket.emit("stop", serverName, (success, error) => {
if (error) {
reject(error);
return;
}
resolve(success);
});
}));
}
/** Send a console command to a server */
console(serverName, command) {
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
yield this.authenticate();
this._socket.emit("console", serverName, command, (success, error) => {
if (error) {
reject(error);
return;
}
resolve(success);
});
}));
}
/** Get an online player list from a server */
getOnlinePlayers(serverName) {
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
yield this.authenticate();
this._socket.emit("onlinePlayers", serverName, (onlinePlayers, error) => {
if (error) {
reject(error);
return;
}
resolve(onlinePlayers);
});
}));
}
/** Gets a server status */
getStatus(serverName) {
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
yield this.authenticate();
this._socket.emit("status", serverName, (status, error) => {
if (error) {
reject(error);
return;
}
resolve(status);
});
}));
}
/** Control the server whitelist */
whitelist(serverName, action, username) {
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
yield this.authenticate();
this._socket.emit("whitelist", serverName, { action, username }, (res, error) => {
if (error) {
reject(error);
return;
}
resolve(res);
});
}));
}
authenticate() {
return new Promise((resolve, reject) => {
this._socket.emit("authenticate", this._options.name, this._options.apiKey, (success, error) => {
if (!!error && error !== "authenticated") {
reject(error);
return;
}
resolve(success);
});
});
}
/** Check if client is ready to send commands */
get isReady() {
return this._isReady;
}
get name() {
return this._options.name;
}
}
exports.ObserverClient = ObserverClient;