diffusion
Version:
Diffusion JavaScript client
519 lines (518 loc) • 22.7 kB
JavaScript
;
/**
* @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;