UNPKG

@hms-networks/kolibri-js-client

Version:

Kolibri Consumer API client for building kolibri based applications

335 lines 15.2 kB
/* * 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. */ import { cV32, isDefined, KolibriRpcRequest } from '@hms-networks/kolibri-js-core'; import { BaseClient } from './base_client'; const KOLIBRI_PROTOCOL = 'v3.2.c.kolibri'; export class KolibriRpcClient extends BaseClient { getKolibriProtocol() { return KOLIBRI_PROTOCOL; } async callKolibriRpc(server, method, params) { const request = new KolibriRpcRequest(this.getNextRpcId(), server, method, params); const response = await this.sendKolibriRpcRequest(request); return response.result; } // ------------------------------------------------------------------------------------- // ----------------------- GENERAL ----------------------------------------------------- // ------------------------------------------------------------------------------------- async login(params) { let loginParams; if (isDefined(this.config.auth)) { loginParams = this.config.auth; } else if (isDefined(params)) { loginParams = params; } else { throw new Error('Authentication not provided. ClientConfig#auth or login params must be provided.'); } const request = new 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 cV32.CloseRequest(this.getNextRpcId()); const response = await this.sendKolibriRequest(request); return response.result; } async write(params) { const request = new 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 cV32.CommitParams(tId)); } return response.result; } catch (e) { if (tId) { try { await this.cancel(new cV32.CancelParams(tId)); } catch (ex) { throw ex; } } throw e; } } async read(params) { const request = new cV32.ReadRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async commit(params) { const request = new cV32.CommitRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async cancel(params) { const request = new cV32.CancelRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async subscribe(params) { const request = new 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 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 cV32.PermissionNodeSetRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async permissionNodeList(params) { const request = new cV32.PermissionNodeListRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async permissionRpcAdd(params) { const request = new cV32.PermissionRpcAddRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async permissionRpcRemove(params) { const request = new cV32.PermissionRpcRemoveRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async permissionRpcList(params) { const request = new cV32.PermissionRpcListRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async permissionUserList(params) { const request = new cV32.PermissionUserListRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } // ------------------------------------------------------------------------------------- // ----------------------- PROJECT MANAGEMENT ------------------------------------------ // ------------------------------------------------------------------------------------- async projectBrowse(params) { const request = new cV32.ProjectBrowseRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async projectCreate(params) { const request = new cV32.ProjectCreateRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async projectDelete(params) { const request = new cV32.ProjectDeleteRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async projectGetLiveUsage(params) { const request = new cV32.ProjectGetLiveUsageRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async projectGetProperties(params) { const request = new cV32.ProjectGetPropertiesRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async projectGetStatistics(params) { const request = new cV32.ProjectGetStatisticsRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async projectModify(params) { const request = new cV32.ProjectModifyRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async projectGetHistoryUsage(params) { const request = new cV32.ProjectGetHistoryUsageRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } // ------------------------------------------------------------------------------------- // ----------------------- USER MANAGEMENT --------------------------------------------- // ------------------------------------------------------------------------------------- async userSubscribe(params) { const request = new 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 cV32.UserUnsubscribeRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); this.clearUserSubscribeData(); return response.result; } async userBrowse(params) { const request = new cV32.UserBrowseRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userCreate(params) { const request = new cV32.UserCreateRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userModify(params) { const request = new cV32.UserModifyRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGetSessions(params) { const request = new cV32.UserGetSessionsRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGetHistory(params) { const request = new cV32.UserGetHistoryRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userDelete(params) { const request = new cV32.UserDeleteRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGetProperties(params) { const request = new cV32.UserGetPropertiesRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } // ------------------------------------------------------------------------------------- // ----------------------- USERGROUP MANAGEMENT ---------------------------------------- // ------------------------------------------------------------------------------------- async userGroupBrowse(params) { const request = new cV32.UserGroupBrowseRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGroupCreate(params) { const request = new cV32.UserGroupCreateRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGroupModify(params) { const request = new cV32.UserGroupModifyRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGroupDelete(params) { const request = new cV32.UserGroupDeleteRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGroupGetProperties(params) { const request = new cV32.UserGroupGetPropertiesRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGroupAddMember(params) { const request = new cV32.UserGroupAddMemberRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGroupRemoveMember(params) { const request = new cV32.UserGroupRemoveMemberRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGroupListMembers(params) { const request = new cV32.UserGroupListMembersRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async userGroupIsMember(params) { const request = new cV32.UserGroupIsMemberRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } // ------------------------------------------------------------------------------------- // ----------------------- NODE MANAGEMENT ---------------------------------------- // ------------------------------------------------------------------------------------- async nodeBrowse(params) { const request = new cV32.NodeBrowseRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async nodeCreate(params) { const request = new cV32.NodeCreateRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async nodeModify(params) { const request = new cV32.NodeModifyRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async nodeDelete(params) { const request = new cV32.NodeDeleteRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async nodeGetProperties(params) { const request = new cV32.NodeGetPropertiesRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async nodeGetHistory(params) { const request = new cV32.NodeGetHistoryRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } async nodeDeleteHistory(params) { const request = new cV32.NodeDeleteHistoryRequest(this.getNextRpcId(), params); const response = await this.sendKolibriRequest(request); return response.result; } } //# sourceMappingURL=kolibri_rpc_client.js.map