@hms-networks/kolibri-js-client
Version:
Kolibri Consumer API client for building kolibri based applications
339 lines • 16.3 kB
JavaScript
"use strict";
/*
* Copyright 2021 HMS Industrial Networks AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http: //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.KolibriRpcClient = void 0;
const kolibri_js_core_1 = require("@hms-networks/kolibri-js-core");
const base_client_1 = require("./base_client");
const KOLIBRI_PROTOCOL = 'v3.2.c.kolibri';
class KolibriRpcClient extends base_client_1.BaseClient {
getKolibriProtocol() {
return KOLIBRI_PROTOCOL;
}
async callKolibriRpc(server, method, params) {
const request = new kolibri_js_core_1.KolibriRpcRequest(this.getNextRpcId(), server, method, params);
const response = await this.sendKolibriRpcRequest(request);
return response.result;
}
// -------------------------------------------------------------------------------------
// ----------------------- GENERAL -----------------------------------------------------
// -------------------------------------------------------------------------------------
async login(params) {
let loginParams;
if ((0, kolibri_js_core_1.isDefined)(this.config.auth)) {
loginParams = this.config.auth;
}
else if ((0, kolibri_js_core_1.isDefined)(params)) {
loginParams = params;
}
else {
throw new Error('Authentication not provided. ClientConfig#auth or login params must be provided.');
}
const request = new kolibri_js_core_1.cV32.LoginRequest(this.getNextRpcId(), loginParams);
const response = await this.sendKolibriRequest(request);
this.storeLoginData(loginParams, response.result);
return response.result;
}
async close() {
this.connection.disableReconnect();
const request = new kolibri_js_core_1.cV32.CloseRequest(this.getNextRpcId());
const response = await this.sendKolibriRequest(request);
return response.result;
}
async write(params) {
const request = new kolibri_js_core_1.cV32.WriteRequest(this.getNextRpcId(), params);
let firstQoSGroup = false;
let secondQoSGroup = false;
request.params.nodes.forEach((node) => {
if (node.quality >= 0 && node.quality <= 2) {
firstQoSGroup = true;
}
else if (node.quality >= 3 && node.quality <= 4) {
secondQoSGroup = true;
}
// check for qos level mix
if (firstQoSGroup && secondQoSGroup) {
throw new Error('Points with QoS level 0, 1 or 2 ' +
'must not be mixed in the same kolibri.write RPC with points which have QoS level 3 or 4.');
}
});
let tId;
if (secondQoSGroup) {
tId = this.getNextTid();
}
try {
const response = await this.sendKolibriRequest(request);
if (tId) {
await this.commit(new kolibri_js_core_1.cV32.CommitParams(tId));
}
return response.result;
}
catch (e) {
if (tId) {
try {
await this.cancel(new kolibri_js_core_1.cV32.CancelParams(tId));
}
catch (ex) {
throw ex;
}
}
throw e;
}
}
async read(params) {
const request = new kolibri_js_core_1.cV32.ReadRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async commit(params) {
const request = new kolibri_js_core_1.cV32.CommitRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async cancel(params) {
const request = new kolibri_js_core_1.cV32.CancelRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async subscribe(params) {
const request = new kolibri_js_core_1.cV32.SubscribeRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
this.subscription.storeSubscribedNodes(response.result);
this.storeSubscribeData(params, response.result);
return response.result;
}
async unsubscribe(params) {
const request = new kolibri_js_core_1.cV32.UnsubscribeRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
this.subscription.deleteSubscribedNodes(params);
this.clearSubscribeData();
return response.result;
}
// -------------------------------------------------------------------------------------
// ----------------------- PERMISSION MANAGEMENT ---------------------------------------
// -------------------------------------------------------------------------------------
async permissionNodeSet(params) {
const request = new kolibri_js_core_1.cV32.PermissionNodeSetRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async permissionNodeList(params) {
const request = new kolibri_js_core_1.cV32.PermissionNodeListRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async permissionRpcAdd(params) {
const request = new kolibri_js_core_1.cV32.PermissionRpcAddRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async permissionRpcRemove(params) {
const request = new kolibri_js_core_1.cV32.PermissionRpcRemoveRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async permissionRpcList(params) {
const request = new kolibri_js_core_1.cV32.PermissionRpcListRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async permissionUserList(params) {
const request = new kolibri_js_core_1.cV32.PermissionUserListRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
// -------------------------------------------------------------------------------------
// ----------------------- PROJECT MANAGEMENT ------------------------------------------
// -------------------------------------------------------------------------------------
async projectBrowse(params) {
const request = new kolibri_js_core_1.cV32.ProjectBrowseRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async projectCreate(params) {
const request = new kolibri_js_core_1.cV32.ProjectCreateRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async projectDelete(params) {
const request = new kolibri_js_core_1.cV32.ProjectDeleteRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async projectGetLiveUsage(params) {
const request = new kolibri_js_core_1.cV32.ProjectGetLiveUsageRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async projectGetProperties(params) {
const request = new kolibri_js_core_1.cV32.ProjectGetPropertiesRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async projectGetStatistics(params) {
const request = new kolibri_js_core_1.cV32.ProjectGetStatisticsRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async projectModify(params) {
const request = new kolibri_js_core_1.cV32.ProjectModifyRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async projectGetHistoryUsage(params) {
const request = new kolibri_js_core_1.cV32.ProjectGetHistoryUsageRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
// -------------------------------------------------------------------------------------
// ----------------------- USER MANAGEMENT ---------------------------------------------
// -------------------------------------------------------------------------------------
async userSubscribe(params) {
const request = new kolibri_js_core_1.cV32.UserSubscribeRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
this.storeUserSubscribeData(params, response.result);
return response.result;
}
async userUnsubscribe(params) {
const request = new kolibri_js_core_1.cV32.UserUnsubscribeRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
this.clearUserSubscribeData();
return response.result;
}
async userBrowse(params) {
const request = new kolibri_js_core_1.cV32.UserBrowseRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userCreate(params) {
const request = new kolibri_js_core_1.cV32.UserCreateRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userModify(params) {
const request = new kolibri_js_core_1.cV32.UserModifyRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGetSessions(params) {
const request = new kolibri_js_core_1.cV32.UserGetSessionsRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGetHistory(params) {
const request = new kolibri_js_core_1.cV32.UserGetHistoryRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userDelete(params) {
const request = new kolibri_js_core_1.cV32.UserDeleteRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGetProperties(params) {
const request = new kolibri_js_core_1.cV32.UserGetPropertiesRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
// -------------------------------------------------------------------------------------
// ----------------------- USERGROUP MANAGEMENT ----------------------------------------
// -------------------------------------------------------------------------------------
async userGroupBrowse(params) {
const request = new kolibri_js_core_1.cV32.UserGroupBrowseRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGroupCreate(params) {
const request = new kolibri_js_core_1.cV32.UserGroupCreateRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGroupModify(params) {
const request = new kolibri_js_core_1.cV32.UserGroupModifyRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGroupDelete(params) {
const request = new kolibri_js_core_1.cV32.UserGroupDeleteRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGroupGetProperties(params) {
const request = new kolibri_js_core_1.cV32.UserGroupGetPropertiesRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGroupAddMember(params) {
const request = new kolibri_js_core_1.cV32.UserGroupAddMemberRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGroupRemoveMember(params) {
const request = new kolibri_js_core_1.cV32.UserGroupRemoveMemberRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGroupListMembers(params) {
const request = new kolibri_js_core_1.cV32.UserGroupListMembersRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async userGroupIsMember(params) {
const request = new kolibri_js_core_1.cV32.UserGroupIsMemberRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
// -------------------------------------------------------------------------------------
// ----------------------- NODE MANAGEMENT ----------------------------------------
// -------------------------------------------------------------------------------------
async nodeBrowse(params) {
const request = new kolibri_js_core_1.cV32.NodeBrowseRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async nodeCreate(params) {
const request = new kolibri_js_core_1.cV32.NodeCreateRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async nodeModify(params) {
const request = new kolibri_js_core_1.cV32.NodeModifyRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async nodeDelete(params) {
const request = new kolibri_js_core_1.cV32.NodeDeleteRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async nodeGetProperties(params) {
const request = new kolibri_js_core_1.cV32.NodeGetPropertiesRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async nodeGetHistory(params) {
const request = new kolibri_js_core_1.cV32.NodeGetHistoryRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
async nodeDeleteHistory(params) {
const request = new kolibri_js_core_1.cV32.NodeDeleteHistoryRequest(this.getNextRpcId(), params);
const response = await this.sendKolibriRequest(request);
return response.result;
}
}
exports.KolibriRpcClient = KolibriRpcClient;
//# sourceMappingURL=kolibri_rpc_client.js.map