gamelet-cli
Version:
Download project from code.gamelet.com, edit/test in vscode and sync back to server.
75 lines • 6.18 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.apiManager = void 0;
const ManagerBase_1 = require("./ManagerBase");
const cors_1 = __importDefault(require("cors"));
const ClientManager_1 = require("./ClientManager");
const MaxListClientsLength = 100;
class ApiManager extends ManagerBase_1.ManagerBase {
constructor() {
super('ApiManager');
}
initialize(app) {
/**
* this is for gltserver to access msgserver states
*/
app.get('/clientapi/:method/:clientCode', cors_1.default(), (_req, res) => {
this.callMethod('clientapi_', _req.params.method, this.parseParams(_req.params.clientCode, _req.query.args))
.then(json => {
res.json(json);
})
.catch(err => {
res.sendStatus(500).json(err);
});
});
}
parseParams(firstParam, paramsString) {
let params = paramsString && JSON.parse(paramsString);
if (!Array.isArray(params)) {
params = [];
}
if (firstParam !== null) {
params.unshift(firstParam);
}
return params;
}
callMethod(prefix, methodName, params) {
let method = this[prefix + methodName];
this.designContract(method && typeof method === 'function', 'This api is not available.');
return method.apply(this, params);
}
clientapi_list_players_count(_clientCode, clientCodes) {
if (clientCodes.length > MaxListClientsLength) {
clientCodes = clientCodes.slice(0, MaxListClientsLength);
}
let json = {};
for (let clientCode of clientCodes) {
let project = ClientManager_1.clientManager.getCachedClientProject(clientCode);
if (project) {
json[clientCode] = project.playersCount;
}
}
return Promise.resolve(json);
}
clientapi_get_players_count(clientCode, version, options) {
let project = ClientManager_1.clientManager.getCachedClientProject(clientCode);
return Promise.resolve({
count: project ? project.getPlayersCount(version, options) : 0
});
}
clientapi_list_clients(_clientCode, start, length) {
length = Math.min(length, MaxListClientsLength);
let projects = ClientManager_1.clientManager.listProjects().slice(start, start + length);
let clients = {};
for (let project of projects) {
clients[project.code] = project.playersCount;
;
}
return Promise.resolve(clients);
}
}
exports.apiManager = new ApiManager();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2ZXIvbWFuYWdlcnMvQXBpTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQ0FBNEM7QUFFNUMsZ0RBQXdCO0FBQ3hCLG1EQUFnRDtBQUdoRCxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUVqQyxNQUFNLFVBQVcsU0FBUSx5QkFBVztJQUVoQztRQUNJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQW9CO1FBRTNCOztXQUVHO1FBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxjQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBYyxDQUFDLENBQUM7aUJBQ2pILElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVCxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1QsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7SUFFTyxXQUFXLENBQUMsVUFBZSxFQUFFLFlBQW9CO1FBQ3JELElBQUksTUFBTSxHQUFVLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FB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