@iotize/tap
Version:
IoTize Device client for Javascript
186 lines • 11.3 kB
JavaScript
import { BaseError } from '@iotize/common/error';
import { InvalidConfigurationError } from './invalid-configuration-error';
import { IotizeBundleModel } from './iotize-bundle-model';
import { IotizeProfileModel } from './iotize-profile-model';
/**
*
*/
export class BundleDoesNotExistError extends BaseError {
// static CODE = 'BundleDoesNotExistError';
constructor(bundleId, config) {
super('Bundle "' + bundleId + '" does not exist.');
this.bundleId = bundleId;
this.config = config;
}
}
/**
*
*/
export class VariableDoesNotExistError extends BaseError {
// static CODE = 'VariableDoesNotExistError';
constructor(variableId, config) {
super(`Variable "${variableId}" does not exist.`);
this.variableId = variableId;
this.config = config;
}
}
/**
* Class representing an iotize studio configuration for a module
*/
export class IotizeConfigModel {
constructor(data) {
if (!data.IOTizeConfiguration) {
//console.error('Trying to create an IotizeConfigModel with invalid data: ', data);
throw new InvalidConfigurationError('Key IOTizeConfiguration must exists');
}
if (!data.IOTizeConfiguration.IOTizeApp) {
throw new InvalidConfigurationError('Key IOTizeConfiguration.IOTizeApp must exists');
}
if (data.IOTizeConfiguration.IOTizeApp.length === 0 ||
!data.IOTizeConfiguration.IOTizeApp[0]['$']) {
throw new InvalidConfigurationError('No IOTizeConfiguration.IOTizeApp defined in this configuration file');
}
this.data = data;
}
toJson() {
return this.data;
}
getAppConfig() {
return this.data.IOTizeConfiguration.IOTizeApp[0];
}
/**
* Get application name
*/
appName() {
if (!this.getAppConfig().$.Name) {
throw new InvalidConfigurationError('Application Name is not set');
}
return this.getAppConfig().$.Name;
}
/**
* Get config version
*/
version() {
if (!this.getAppConfig().$.Config) {
throw new InvalidConfigurationError('App config version is not set');
}
return this.getAppConfig().$.Config;
}
/**
* Get module serial number
*/
id() {
if (!this.getAppConfig().$.DevIoTizeSN) {
throw new InvalidConfigurationError('Serial number is not set');
}
return this.getAppConfig().$.DevIoTizeSN;
}
/**
* Set module serial number
* @param id
*/
setId(id) {
this.getAppConfig().$.DevIoTizeSN = id;
return this;
}
/**
* Alias for this.id();
*/
serialNumber() {
return this.id();
}
/**
* Get an array of all bundles
*/
bundles() {
if (!this.data.IOTizeConfiguration.IOTizeBundle) {
return [];
}
let bundles = [];
for (let bundle of this.data.IOTizeConfiguration.IOTizeBundle) {
// TODO bug if only one bundle
bundles.push(new IotizeBundleModel(bundle, this));
}
return bundles;
}
/**
* Array of bundles available for a specific profile
*/
bundleAvailableForProfileName(profileName) {
return this.bundles().reduce((list, currentValue) => {
if (currentValue.getACLGroup().hasRight(profileName, 'read')) {
list.push(currentValue);
}
return list;
}, []);
}
/**
* Get an array of all variables
*/
variables() {
if (!this.data.IOTizeConfiguration.IOTizeBundle) {
return [];
}
let res = [];
for (let bundle of this.data.IOTizeConfiguration.IOTizeBundle) {
bundle = new IotizeBundleModel(bundle, this);
res.push(...bundle.variables());
}
return res;
}
/**
* Get bundle by id, if it does not exist, throw BundleDoesNotExistError
* @throws BundleDoesNotExistError
* @param id
*/
bundle(id) {
for (let bundle of this.bundles()) {
if (bundle.id() === id) {
return bundle;
}
}
throw new BundleDoesNotExistError(id, this);
}
hasBundle(id) {
for (let bundle of this.bundles()) {
if (bundle.id() === id) {
return bundle;
}
}
return false;
}
/**
* Get variable by id, if it does not exist, throw VariableDoesNotExistError
* @throws VariableDoesNotExistError
* @param id
*/
variable(variableId) {
for (let variable of this.variables()) {
if (variable.id() == variableId) {
return variable;
}
}
throw new VariableDoesNotExistError(variableId, this);
}
/**
* Get an array of all profiles
*/
profiles() {
if (!this.data.IOTizeConfiguration.IOTizeProfile) {
return [];
}
let profiles = [];
for (let profile of this.data.IOTizeConfiguration.IOTizeProfile) {
// TODO bug if there is only one profile...
profiles.push(new IotizeProfileModel(profile));
}
return profiles;
}
description() {
return this.getAppConfig().$.GUI_Description;
}
name() {
return this.getAppConfig().$.GUI_Name;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90aXplLWNvbmZpZy1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZy9pb3RpemUtc3R1ZGlvL3NyYy9saWIvbW9kZWwvaW90aXplLWNvbmZpZy1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsU0FBUztJQUNwRCwyQ0FBMkM7SUFFM0MsWUFDUyxRQUFnQixFQUNoQixNQUF5QjtRQUVoQyxLQUFLLENBQ0gsVUFBVSxHQUFHLFFBQVEsR0FBRyxtQkFBbUIsQ0FFNUMsQ0FBQztRQU5LLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7SUFNbEMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsU0FBUztJQUN0RCw2Q0FBNkM7SUFFN0MsWUFDUyxVQUFrQixFQUNsQixNQUF5QjtRQUVoQyxLQUFLLENBQ0gsYUFBYSxVQUFVLG1CQUFtQixDQUUzQyxDQUFDO1FBTkssZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFtQjtJQU1sQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFBWSxJQUFTO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDN0IsbUZBQW1GO1lBQ25GLE1BQU0sSUFBSSx5QkFBeUIsQ0FDakMscUNBQXFDLENB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