UNPKG

ts-onvif

Version:

Client to ONVIF devices

349 lines 14.2 kB
"use strict"; /** * Analytics Device ver10 module * @author Andrew D.Laptev <a.d.laptev@gmail.com> * @see https://www.onvif.org/ver10/analyticsDevice/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 Device service */ class AnalyticsDevice extends service_1.default { constructor(onvif) { super(onvif, 'analyticsdevice'); } static tokensToBuild(tokens) { if (!tokens?.length) { return undefined; } return tokens.length === 1 ? tokens[0] : tokens; } static configurationEntityToBuild(configuration) { return { $: { token: configuration.token }, Name: configuration.name, UseCount: configuration.useCount, }; } static sourceIdentificationToBuild(sourceIdentification) { return { Name: sourceIdentification.name, ...(sourceIdentification.token && { Token: AnalyticsDevice.tokensToBuild(sourceIdentification.token), }), ...(sourceIdentification.extension && { Extension: sourceIdentification.extension }), }; } static videoEncoderConfigurationToBuild(configuration) { return { ...AnalyticsDevice.configurationEntityToBuild(configuration), Encoding: configuration.encoding, Resolution: { Width: configuration.resolution.width, Height: configuration.resolution.height, }, Quality: configuration.quality, ...(configuration.rateControl && { RateControl: { FrameRateLimit: configuration.rateControl.frameRateLimit, EncodingInterval: configuration.rateControl.encodingInterval, BitrateLimit: configuration.rateControl.bitrateLimit, }, }), ...(configuration.MPEG4 && { MPEG4: { GovLength: configuration.MPEG4.govLength, Mpeg4Profile: configuration.MPEG4.mpeg4Profile, }, }), ...(configuration.H264 && { H264: { GovLength: configuration.H264.govLength, H264Profile: configuration.H264.H264Profile, }, }), Multicast: (0, toOnvifXMLSchemaObject_1.multicastConfiguration)(configuration.multicast), SessionTimeout: configuration.sessionTimeout, }; } static metadataInputToBuild(metadataInput) { return { ...(metadataInput.metadataConfig && { MetadataConfig: metadataInput.metadataConfig.map((item) => (0, toOnvifXMLSchemaObject_1.config)(item)), }), ...(metadataInput.extension && { Extension: metadataInput.extension }), }; } static analyticsEngineInputToBuild(configuration) { return { ...AnalyticsDevice.configurationEntityToBuild(configuration), SourceIdentification: AnalyticsDevice.sourceIdentificationToBuild(configuration.sourceIdentification), VideoInput: AnalyticsDevice.videoEncoderConfigurationToBuild(configuration.videoInput), MetadataInput: AnalyticsDevice.metadataInputToBuild(configuration.metadataInput), }; } static videoAnalyticsConfigurationToBuild(configuration) { return { ...AnalyticsDevice.configurationEntityToBuild(configuration), AnalyticsEngineConfiguration: { ...(configuration.analyticsEngineConfiguration.analyticsModule && { AnalyticsModule: configuration.analyticsEngineConfiguration.analyticsModule.map(toOnvifXMLSchemaObject_1.config), }), ...(configuration.analyticsEngineConfiguration.extension && { Extension: configuration.analyticsEngineConfiguration.extension, }), }, RuleEngineConfiguration: { ...(configuration.ruleEngineConfiguration.rule && { Rule: configuration.ruleEngineConfiguration.rule.map(toOnvifXMLSchemaObject_1.config), }), ...(configuration.ruleEngineConfiguration.extension && { Extension: configuration.ruleEngineConfiguration.extension, }), }, }; } static analyticsEngineInputInfoToBuild(inputInfo) { return { ...(inputInfo.inputInfo && { InputInfo: (0, toOnvifXMLSchemaObject_1.config)(inputInfo.inputInfo) }), ...(inputInfo.extension && { Extension: inputInfo.extension }), }; } static engineConfigurationToBuild(engineConfiguration) { return { VideoAnalyticsConfiguration: AnalyticsDevice.videoAnalyticsConfigurationToBuild(engineConfiguration.videoAnalyticsConfiguration), AnalyticsEngineInputInfo: AnalyticsDevice.analyticsEngineInputInfoToBuild(engineConfiguration.analyticsEngineInputInfo), }; } static analyticsEngineConfigurationToBuild(analyticsEngineConfiguration) { const engineConfiguration = analyticsEngineConfiguration.engineConfiguration ? analyticsEngineConfiguration.engineConfiguration.map((item) => AnalyticsDevice.engineConfigurationToBuild(item)) : undefined; return { ...(engineConfiguration && { EngineConfiguration: engineConfiguration.length === 1 ? engineConfiguration[0] : engineConfiguration, }), ...(analyticsEngineConfiguration.extension && { Extension: analyticsEngineConfiguration.extension, }), }; } static analyticsEngineToBuild(configuration) { return { ...AnalyticsDevice.configurationEntityToBuild(configuration), AnalyticsEngineConfiguration: AnalyticsDevice.analyticsEngineConfigurationToBuild(configuration.analyticsEngineConfiguration), }; } static analyticsEngineControlToBuild(configuration) { return { ...AnalyticsDevice.configurationEntityToBuild(configuration), EngineToken: configuration.engineToken, EngineConfigToken: configuration.engineConfigToken, ...(configuration.inputToken && { InputToken: AnalyticsDevice.tokensToBuild(configuration.inputToken), }), ...(configuration.receiverToken && { ReceiverToken: AnalyticsDevice.tokensToBuild(configuration.receiverToken), }), ...(configuration.multicast && { Multicast: (0, toOnvifXMLSchemaObject_1.multicastConfiguration)(configuration.multicast), }), Subscription: (0, toOnvifXMLSchemaObject_1.config)(configuration.subscription), Mode: configuration.mode, ...(configuration.extension !== undefined ? { Extension: configuration.extension } : {}), }; } /** * Returns the capabilities of the analytics device service. */ async getServiceCapabilities() { const response = await this.request({ GetServiceCapabilities: {}, }); return response.getServiceCapabilitiesResponse?.capabilities ?? {}; } /** * Deletes an analytics engine control configuration. * @param options */ async deleteAnalyticsEngineControl({ configurationToken }) { await this.request({ DeleteAnalyticsEngineControl: { ConfigurationToken: configurationToken, }, }); } /** * Creates analytics engine input configurations. * @param options */ async createAnalyticsEngineInputs({ configuration, forcePersistence, }) { const response = await this.request({ CreateAnalyticsEngineInputs: { Configuration: configuration.map((item) => AnalyticsDevice.analyticsEngineInputToBuild(item)), ForcePersistence: forcePersistence.length === 1 ? forcePersistence[0] : forcePersistence, }, }, { array: ['configuration'] }); return response.createAnalyticsEngineInputsResponse.configuration ?? []; } /** * Creates an analytics engine control configuration. * @param options */ async createAnalyticsEngineControl({ configuration }) { const response = await this.request({ CreateAnalyticsEngineControl: { Configuration: AnalyticsDevice.analyticsEngineControlToBuild(configuration), }, }, { array: ['configuration'] }); return response.createAnalyticsEngineControlResponse.configuration ?? []; } /** * Modifies an analytics engine control configuration. * @param options */ async setAnalyticsEngineControl({ configuration, forcePersistence }) { await this.request({ SetAnalyticsEngineControl: { Configuration: AnalyticsDevice.analyticsEngineControlToBuild(configuration), ForcePersistence: forcePersistence, }, }); } /** * Returns an analytics engine control configuration. * @param options */ async getAnalyticsEngineControl({ configurationToken }) { const response = await this.request({ GetAnalyticsEngineControl: { ConfigurationToken: configurationToken, }, }); return response.getAnalyticsEngineControlResponse.configuration; } /** * Returns all analytics engine control configurations. */ async getAnalyticsEngineControls() { const response = await this.request({ GetAnalyticsEngineControls: {} }, { array: ['analyticsEngineControls'] }); return response.getAnalyticsEngineControlsResponse.analyticsEngineControls ?? []; } /** * Returns an analytics engine configuration. * @param options */ async getAnalyticsEngine({ configurationToken }) { const response = await this.request({ GetAnalyticsEngine: { ConfigurationToken: configurationToken, }, }); return response.getAnalyticsEngineResponse.configuration; } /** * Returns all analytics engine configurations. */ async getAnalyticsEngines() { const response = await this.request({ GetAnalyticsEngines: {} }, { array: ['configuration'] }); return response.getAnalyticsEnginesResponse.configuration ?? []; } /** * Modifies a video analytics configuration. * @param options */ async setVideoAnalyticsConfiguration({ configuration, forcePersistence, }) { await this.request({ SetVideoAnalyticsConfiguration: { Configuration: AnalyticsDevice.videoAnalyticsConfigurationToBuild(configuration), ForcePersistence: forcePersistence, }, }); } /** * Modifies an analytics engine input configuration. * @param options */ async setAnalyticsEngineInput({ configuration, forcePersistence }) { await this.request({ SetAnalyticsEngineInput: { Configuration: AnalyticsDevice.analyticsEngineInputToBuild(configuration), ForcePersistence: forcePersistence, }, }); } /** * Returns an analytics engine input configuration. * @param options */ async getAnalyticsEngineInput({ configurationToken }) { const response = await this.request({ GetAnalyticsEngineInput: { ConfigurationToken: configurationToken, }, }); return response.getAnalyticsEngineInputResponse.configuration; } /** * Returns all analytics engine input configurations. */ async getAnalyticsEngineInputs() { const response = await this.request({ GetAnalyticsEngineInputs: {} }, { array: ['configuration'] }); return response.getAnalyticsEngineInputsResponse.configuration ?? []; } /** * Requests a URI for an analytics device stream. * @param options */ async getAnalyticsDeviceStreamUri({ streamSetup, analyticsEngineControlToken, }) { const response = await this.request({ GetAnalyticsDeviceStreamUri: { StreamSetup: (0, toOnvifXMLSchemaObject_1.streamSetupToBuild)(streamSetup), AnalyticsEngineControlToken: analyticsEngineControlToken, }, }); return response.getAnalyticsDeviceStreamUriResponse.uri; } /** * Returns a video analytics configuration. * @param options */ async getVideoAnalyticsConfiguration({ configurationToken, }) { const response = await this.request({ GetVideoAnalyticsConfiguration: { ConfigurationToken: configurationToken, }, }); return response.getVideoAnalyticsConfigurationResponse.configuration; } /** * Deletes analytics engine input configurations. * @param options */ async deleteAnalyticsEngineInputs({ configurationToken }) { await this.request({ DeleteAnalyticsEngineInputs: { ConfigurationToken: AnalyticsDevice.tokensToBuild(configurationToken), }, }); } /** * Returns the state of an analytics engine control. * @param options */ async getAnalyticsState({ analyticsEngineControlToken }) { const response = await this.request({ GetAnalyticsState: { AnalyticsEngineControlToken: analyticsEngineControlToken, }, }); return response.getAnalyticsStateResponse.state; } } exports.default = AnalyticsDevice; //# sourceMappingURL=analyticsdevice.js.map