ts-onvif
Version:
Client to ONVIF devices
96 lines • 2.81 kB
JavaScript
;
/**
* Helper functions for representing commonly used ONVIF types in XML format
* @author Andrew D.Laptev <a.d.laptev@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.xsany = void 0;
exports.itemList = itemList;
exports.config = config;
exports.multicastConfiguration = multicastConfiguration;
exports.streamSetupToBuild = streamSetupToBuild;
exports.ptzVectorToBuild = ptzVectorToBuild;
exports.stringListToBuild = stringListToBuild;
exports.xsany = '__any__';
function itemList(itemList) {
return {
...(itemList.simpleItem && {
SimpleItem: itemList.simpleItem.map((item) => ({
$: { Name: item.name, Value: item.value },
})),
}),
...(itemList.elementItem && {
ElementItem: itemList.elementItem.map((elementItem) => {
const anyXml = (elementItem[exports.xsany] ?? {});
return {
...anyXml,
$: { Name: elementItem.name, ...anyXml?.$ },
};
}),
}),
...(itemList.extension && { Extension: itemList.extension }),
};
}
function config(config) {
return {
$: {
Name: config.name,
Type: config.type,
},
Parameters: itemList(config.parameters),
};
}
function multicastConfiguration(multicast) {
return {
Address: {
Type: multicast.address.type,
...(multicast.address.IPv4Address && { IPv4Address: multicast.address.IPv4Address }),
...(multicast.address.IPv6Address && { IPv6Address: multicast.address.IPv6Address }),
},
Port: multicast.port,
TTL: multicast.TTL,
AutoStart: multicast.autoStart,
};
}
function streamSetupToBuild({ stream, transport }) {
return {
Stream: stream,
Transport: {
Protocol: transport.protocol,
...(transport.tunnel && {
Tunnel: {
Protocol: transport.tunnel.protocol,
},
}),
},
};
}
function ptzVectorToBuild(vector) {
return {
...(vector.panTilt && {
PanTilt: {
$: {
x: vector.panTilt.x,
y: vector.panTilt.y,
},
},
}),
...(vector.zoom && {
Zoom: {
$: {
x: vector.zoom.x,
},
},
}),
};
}
/**
* ONVIF StringList / StringAttrList values are encoded as space-separated strings in XML attributes.
*/
function stringListToBuild(list) {
if (!list?.length) {
return undefined;
}
return list.join(' ');
}
//# sourceMappingURL=toOnvifXMLSchemaObject.js.map