UNPKG

@hms-networks/kolibri-js-client

Version:

Kolibri Consumer API client for building kolibri based applications

339 lines 16.3 kB
"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