ts-onvif
Version:
Client to ONVIF devices
201 lines • 6.88 kB
JavaScript
;
/**
* Analytics ver20 module
* @author Andrew D.Laptev <a.d.laptev@gmail.com>
* @see https://www.onvif.org/ver20/analytics/wsdl/analytics.wsdl
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const service_1 = __importDefault(require("./service"));
const toOnvifXMLSchemaObject_1 = require("./utils/toOnvifXMLSchemaObject");
/**
* Analytics service
*/
class Analytics extends service_1.default {
constructor(onvif) {
super(onvif, 'analytics');
}
static configsToBuild(configs) {
if (!configs?.length) {
return undefined;
}
return configs.map((cfg) => (0, toOnvifXMLSchemaObject_1.config)(cfg));
}
static namesToBuild(names) {
if (!names?.length) {
return undefined;
}
return names.length === 1 ? names[0] : names;
}
/**
* Returns the capabilities of the analytics service.
*/
async getServiceCapabilities() {
const response = await this.request({
GetServiceCapabilities: {},
});
return response.getServiceCapabilitiesResponse?.capabilities ?? {};
}
/**
* Returns the types of rules supported by the device for a video analytics configuration.
* @param options
*/
async getSupportedRules({ configurationToken }) {
const response = await this.request({
GetSupportedRules: {
ConfigurationToken: configurationToken,
},
}, { array: ['ruleDescription'] });
return response.getSupportedRulesResponse.supportedRules;
}
/**
* Creates one or more rules on a video analytics configuration.
* @param options
*/
async createRules({ configurationToken, rule }) {
await this.request({
CreateRules: {
ConfigurationToken: configurationToken,
Rule: Analytics.configsToBuild(rule),
},
});
}
/**
* Deletes rules from a video analytics configuration.
* @param options
*/
async deleteRules({ configurationToken, ruleName }) {
await this.request({
DeleteRules: {
ConfigurationToken: configurationToken,
RuleName: Analytics.namesToBuild(ruleName),
},
});
}
/**
* Modifies rules on a video analytics configuration.
* @param options
*/
async modifyRules({ configurationToken, rule }) {
await this.request({
ModifyRules: {
ConfigurationToken: configurationToken,
Rule: Analytics.configsToBuild(rule),
},
});
}
/**
* Returns the rules configured on a video analytics configuration.
* @param options
*/
async getRules({ configurationToken }) {
const response = await this.request({
GetRules: {
ConfigurationToken: configurationToken,
},
}, { array: ['rule'] });
return response.getRulesResponse.rule ?? [];
}
/**
* Returns options for a supported rule type.
* @param options
*/
async getRuleOptions({ configurationToken, ruleType }) {
const response = await this.request({
GetRuleOptions: {
ConfigurationToken: configurationToken,
...(ruleType !== undefined && { RuleType: ruleType }),
},
}, { array: ['ruleOptions'] });
return response.getRuleOptionsResponse.ruleOptions ?? [];
}
/**
* Returns the types of analytics modules supported by the device.
* @param options
*/
async getSupportedAnalyticsModules({ configurationToken, }) {
const response = await this.request({
GetSupportedAnalyticsModules: {
ConfigurationToken: configurationToken,
},
}, { array: ['analyticsModuleDescription'] });
return response.getSupportedAnalyticsModulesResponse.supportedAnalyticsModules;
}
/**
* Creates analytics modules on a video analytics configuration.
* @param options
*/
async createAnalyticsModules({ configurationToken, analyticsModule }) {
await this.request({
CreateAnalyticsModules: {
ConfigurationToken: configurationToken,
AnalyticsModule: Analytics.configsToBuild(analyticsModule),
},
});
}
/**
* Deletes analytics modules from a video analytics configuration.
* @param options
*/
async deleteAnalyticsModules({ configurationToken, analyticsModuleName }) {
await this.request({
DeleteAnalyticsModules: {
ConfigurationToken: configurationToken,
AnalyticsModuleName: Analytics.namesToBuild(analyticsModuleName),
},
});
}
/**
* Returns analytics modules configured on a video analytics configuration.
* @param options
*/
async getAnalyticsModules({ configurationToken }) {
const response = await this.request({
GetAnalyticsModules: {
ConfigurationToken: configurationToken,
},
}, { array: ['analyticsModule'] });
return response.getAnalyticsModulesResponse.analyticsModule ?? [];
}
/**
* Modifies analytics modules on a video analytics configuration.
* @param options
*/
async modifyAnalyticsModules({ configurationToken, analyticsModule }) {
await this.request({
ModifyAnalyticsModules: {
ConfigurationToken: configurationToken,
AnalyticsModule: Analytics.configsToBuild(analyticsModule),
},
});
}
/**
* Returns options for a supported analytics module type.
* @param options
*/
async getAnalyticsModuleOptions({ configurationToken, type }) {
const response = await this.request({
GetAnalyticsModuleOptions: {
ConfigurationToken: configurationToken,
...(type !== undefined && { Type: type }),
},
}, { array: ['options'] });
return response.getAnalyticsModuleOptionsResponse.options ?? [];
}
/**
* Returns sample metadata produced by analytics modules.
* @param options
*/
async getSupportedMetadata(options = {}) {
const response = await this.request({
GetSupportedMetadata: {
...(options.type !== undefined && { Type: options.type }),
},
}, { array: ['analyticsModule'] });
return response.getSupportedMetadataResponse?.analyticsModule ?? [];
}
}
exports.default = Analytics;
//# sourceMappingURL=analytics.js.map