UNPKG

diffusion

Version:

Diffusion JavaScript client

519 lines (518 loc) 22.7 kB
"use strict"; /** * @module GatewayControl */ var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GatewayControlImpl = exports.ConfigurationMode = exports.StatusLevel = void 0; var errors_1 = require("./../../errors/errors"); var gateway_client_add_service_request_1 = require("./../services/gateway-control/gateway-client-add-service-request"); var gateway_client_get_configuration_request_1 = require("./../services/gateway-control/gateway-client-get-configuration-request"); var gateway_client_get_service_types_request_1 = require("./../services/gateway-control/gateway-client-get-service-types-request"); var gateway_client_get_services_request_1 = require("./../services/gateway-control/gateway-client-get-services-request"); var gateway_client_get_status_request_1 = require("./../services/gateway-control/gateway-client-get-status-request"); var gateway_client_update_service_request_1 = require("./../services/gateway-control/gateway-client-update-service-request"); var gateway_client_get_operation_detail_request_1 = require("./../services/gateway-control/operations/gateway-client-get-operation-detail-request"); var gateway_client_get_operations_request_1 = require("./../services/gateway-control/operations/gateway-client-get-operations-request"); var gateway_client_invoke_operation_request_1 = require("./../services/gateway-control/operations/gateway-client-invoke-operation-request"); var remove_service_request_1 = require("./../services/gateway-control/services/remove-service-request"); var service_get_configuration_request_1 = require("./../services/gateway-control/services/service-get-configuration-request"); var service_get_operation_detail_request_1 = require("./../services/gateway-control/services/service-get-operation-detail-request"); var service_get_operations_request_1 = require("./../services/gateway-control/services/service-get-operations-request"); var service_get_status_request_1 = require("./../services/gateway-control/services/service-get-status-request"); var service_invoke_operation_request_1 = require("./../services/gateway-control/services/service-invoke-operation-request"); var GatewayServices = require("./../services/gateway-services"); var session_id_1 = require("./../session/session-id"); /* eslint-disable jsdoc/require-jsdoc */ /** Gateway client status item severity indicator */ var StatusLevel; (function (StatusLevel) { StatusLevel[StatusLevel["GREEN"] = 0] = "GREEN"; StatusLevel[StatusLevel["AMBER"] = 1] = "AMBER"; StatusLevel[StatusLevel["RED"] = 2] = "RED"; })(StatusLevel = exports.StatusLevel || (exports.StatusLevel = {})); var ConfigurationMode; (function (ConfigurationMode) { ConfigurationMode[ConfigurationMode["STATIC"] = 0] = "STATIC"; ConfigurationMode[ConfigurationMode["DYNAMIC"] = 1] = "DYNAMIC"; })(ConfigurationMode = exports.ConfigurationMode || (exports.ConfigurationMode = {})); /** * Implements the {@link GatewayControl} feature */ var GatewayControlImpl = /** @class */ (function () { /** * Create a new GatewayControlImpl instance * * @param internal the internal session */ function GatewayControlImpl(internal) { this.internal = internal; this.clientRequestsService = internal.getServiceLocator().obtain(GatewayServices.GATEWAY_CLIENT_REQUEST); this.getClientsService = internal.getServiceLocator().obtain(GatewayServices.GET_GATEWAY_CLIENTS); this.getClientDetailsService = internal.getServiceLocator().obtain(GatewayServices.GET_GATEWAY_CLIENT_DETAILS); this.registerClientService = internal.getServiceLocator().obtain(GatewayServices.REGISTER_GATEWAY_CLIENT); this.removeClientService = internal.getServiceLocator().obtain(GatewayServices.REMOVE_GATEWAY_CLIENT); } GatewayControlImpl.prototype.checkSessionId = function (sessionId) { if (sessionId instanceof session_id_1.SessionId) { return sessionId; } else if (typeof sessionId === 'string') { return session_id_1.SessionId.fromString(sessionId); } else if (sessionId === null) { throw new errors_1.IllegalArgumentError("Session ID must be a string or instance of SessionId, but was null"); } throw new errors_1.IllegalArgumentError("Session ID must be a string or instance of SessionId, but was of type: " + typeof sessionId); }; GatewayControlImpl.prototype.checkClientKey = function (clientKey) { // tslint:disable-next-line: strict-type-predicates if (clientKey === null || clientKey === undefined || typeof clientKey !== 'object') { throw new errors_1.IllegalArgumentError("clientKey must be a non-null object"); // tslint:disable-next-line: strict-type-predicates } else if (clientKey.type === null || clientKey.type === undefined) { throw new errors_1.IllegalArgumentError("clientKey type must not be null or undefined"); // tslint:disable-next-line: strict-type-predicates } else if (clientKey.id === null || clientKey.id === undefined) { throw new errors_1.IllegalArgumentError("clientKey id must not be null or undefined"); } return clientKey; }; GatewayControlImpl.prototype.checkOperationName = function (operationName) { return this.checkStringArgument(operationName, 'Operation name'); }; GatewayControlImpl.prototype.checkStringArgument = function (argument, argName) { if (typeof argument === 'string') { return argument; } else if (argument === null) { throw new errors_1.IllegalArgumentError(argName + " must be a string, but was null"); } throw new errors_1.IllegalArgumentError(argName + " must be a string, but was of type: " + typeof argument); }; GatewayControlImpl.prototype.checkServiceId = function (serviceId) { return { name: this.checkStringArgument(serviceId.name, 'Service ID name'), type: this.checkStringArgument(serviceId.type, 'Service ID type') }; }; GatewayControlImpl.prototype.checkServiceHandle = function (serviceHandle) { return __assign(__assign({}, this.checkServiceId(serviceHandle)), { sessionId: this.checkSessionId(serviceHandle.sessionId) }); }; GatewayControlImpl.prototype.sessionContextTransformer = function (sessionId) { return function (gsi) { return (__assign(__assign({}, gsi), { id: __assign(__assign({}, gsi.id), { sessionId: sessionId }) })); }; }; /** * @inheritdoc */ GatewayControlImpl.prototype.getConfiguration = function (sessionId) { var _this = this; var sid = this.checkSessionId(sessionId); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new gateway_client_get_configuration_request_1.GatewayClientGetConfigurationRequest(sid), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getStatus = function (sessionId) { var _this = this; var sid = this.checkSessionId(sessionId); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new gateway_client_get_status_request_1.GatewayClientGetStatusRequest(sid), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getClients = function () { var _this = this; return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.getClientsService.send(null, function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; GatewayControlImpl.prototype.getClientDetailList = function (request) { var _this = this; return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.getClientDetailsService.send(request, function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.registerClient = function (clientKey) { var _this = this; var key = this.checkClientKey(clientKey); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.registerClientService.send(key, function (err) { if (err) { reject(err); } else { resolve(); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.removeClient = function (clientKey) { var _this = this; var key = this.checkClientKey(clientKey); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.removeClientService.send(key, function (err) { if (err) { reject(err); } else { resolve(); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getOperations = function (sessionId) { var _this = this; var sid = this.checkSessionId(sessionId); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new gateway_client_get_operations_request_1.GatewayClientGetOperationsRequest(sid), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getOperationDetail = function (sessionId, operationName) { var _this = this; var sid = this.checkSessionId(sessionId); var opName = this.checkOperationName(operationName); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new gateway_client_get_operation_detail_request_1.GatewayClientGetOperationDetailRequest(sid, opName), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.invokeOperation = function (sessionId, operationName, input) { var _this = this; var sid = this.checkSessionId(sessionId); var opName = this.checkOperationName(operationName); // tslint:disable-next-line: strict-type-predicates var opInput = input === null ? undefined : input; return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new gateway_client_invoke_operation_request_1.GatewayClientInvokeOperationRequest(sid, opName, opInput), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getServiceTypes = function (sessionId) { var _this = this; var sid = this.checkSessionId(sessionId); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new gateway_client_get_service_types_request_1.GatewayClientGetServiceTypesRequest(sid), function (err, response) { if (err) { reject(err); } else { resolve(response.serviceTypes); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getServices = function (sessionId) { var _this = this; var sid = this.checkSessionId(sessionId); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new gateway_client_get_services_request_1.GatewayClientGetServicesRequest(sid), function (err, response) { if (err) { reject(err); } else { var addSessionId = _this.sessionContextTransformer(sid); resolve(response.services.map(addSessionId)); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.addService = function (sessionId, newServiceId, description, configuration) { var _this = this; var sid = this.checkSessionId(sessionId); var serviceId = this.checkServiceId(newServiceId); var desc = this.checkStringArgument(description, 'Service description'); var conf = this.checkStringArgument(configuration, 'Service configuration'); var newService = { id: serviceId, description: desc, configuration: conf }; return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new gateway_client_add_service_request_1.GatewayClientAddServiceRequest(sid, newService), function (err, response) { if (err) { reject(err); } else { var addSessionId = _this.sessionContextTransformer(sid); resolve(addSessionId(response.service)); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.updateService = function (serviceId, description, configuration) { var _this = this; var _a = this.checkServiceHandle(serviceId), sessionId = _a.sessionId, svcId = __rest(_a, ["sessionId"]); // tslint:disable-next-line: strict-type-predicates if ((description === null || description === undefined) // tslint:disable-next-line: strict-type-predicates && (configuration === null || configuration === undefined)) { return Promise.reject(new Error('Missing parameter: you must provide configuration or description (or both) when calling updateService')); } var newService = { id: svcId, description: description, configuration: configuration }; return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new gateway_client_update_service_request_1.GatewayClientUpdateServiceRequest(sessionId, newService), function (err, response) { if (err) { reject(err); } else { var addSessionId = _this.sessionContextTransformer(sessionId); resolve(addSessionId(response.service)); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.removeService = function (serviceId) { var _this = this; var _a = this.checkServiceHandle(serviceId), sessionId = _a.sessionId, svcId = __rest(_a, ["sessionId"]); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new remove_service_request_1.GatewayClientRemoveServiceRequest(sessionId, svcId), function (err, response) { if (err) { reject(err); } else { resolve(); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getServiceStatus = function (serviceId) { var _this = this; var _a = this.checkServiceHandle(serviceId), sessionId = _a.sessionId, svcId = __rest(_a, ["sessionId"]); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new service_get_status_request_1.GatewayServiceGetStatusRequest(sessionId, svcId), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getServiceConfiguration = function (serviceId) { var _this = this; var _a = this.checkServiceHandle(serviceId), sessionId = _a.sessionId, svcId = __rest(_a, ["sessionId"]); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new service_get_configuration_request_1.GatewayServiceGetConfigurationRequest(sessionId, svcId), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getServiceOperations = function (serviceId) { var _this = this; var _a = this.checkServiceHandle(serviceId), sessionId = _a.sessionId, svcId = __rest(_a, ["sessionId"]); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new service_get_operations_request_1.GatewayServiceGetOperationsRequest(sessionId, svcId), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.getServiceOperationDetail = function (serviceId, operationName) { var _this = this; var _a = this.checkServiceHandle(serviceId), sessionId = _a.sessionId, svcId = __rest(_a, ["sessionId"]); var opName = this.checkOperationName(operationName); return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new service_get_operation_detail_request_1.GatewayServiceGetOperationDetailRequest(sessionId, svcId, opName), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; /** * @inheritdoc */ GatewayControlImpl.prototype.invokeServiceOperation = function (serviceId, operationName, input) { var _this = this; var _a = this.checkServiceHandle(serviceId), sessionId = _a.sessionId, svcId = __rest(_a, ["sessionId"]); var opName = this.checkOperationName(operationName); // tslint:disable-next-line: strict-type-predicates var opInput = input === null ? undefined : input; return new Promise(function (resolve, reject) { if (_this.internal.checkConnected(reject)) { _this.clientRequestsService.send(new service_invoke_operation_request_1.GatewayServiceInvokeOperationRequest(sessionId, svcId, opName, opInput), function (err, response) { if (err) { reject(err); } else { resolve(response); } }); } }); }; return GatewayControlImpl; }()); exports.GatewayControlImpl = GatewayControlImpl;