UNPKG

ts-onvif

Version:

Client to ONVIF devices

201 lines 6.88 kB
"use strict"; /** * 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