ts-onvif
Version:
Client to ONVIF devices
349 lines • 14.2 kB
JavaScript
;
/**
* 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