UNPKG

observermc-client

Version:
159 lines (158 loc) 5.91 kB
"use strict"; 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;