ts-onvif
Version:
Client to ONVIF devices
78 lines • 2.46 kB
JavaScript
;
/**
* Uplink ver10 module
* @author Andrew D.Laptev <a.d.laptev@gmail.com>
* @see https://www.onvif.org/ver10/uplink/wsdl/uplink.wsdl
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Uplink = void 0;
const service_1 = __importDefault(require("./service"));
/**
* Uplink service
*/
class Uplink extends service_1.default {
constructor(onvif, service) {
super(onvif, service);
}
static stringListToBuild(items) {
return items.length === 1 ? items[0] : items;
}
static configurationToBuild(configuration) {
return {
RemoteAddress: configuration.remoteAddress,
...(configuration.certificateID && { CertificateID: configuration.certificateID }),
UserLevel: Uplink.stringListToBuild(configuration.userLevel),
...(configuration.certPathValidationPolicyID && {
CertPathValidationPolicyID: configuration.certPathValidationPolicyID,
}),
...(configuration.authorizationServer && {
AuthorizationServer: configuration.authorizationServer,
}),
};
}
/**
* Returns the capabilities of the uplink service.
*/
async getServiceCapabilities() {
const response = await this.request({
GetServiceCapabilities: {},
});
return response.getServiceCapabilitiesResponse?.capabilities ?? {};
}
/**
* Returns configured uplink connections.
*/
async getUplinks() {
const response = await this.request({
GetUplinks: {},
}, { array: ['configuration'] });
return response.getUplinksResponse?.configuration ?? [];
}
/**
* Adds or modifies an uplink configuration.
* @param options
*/
async setUplink({ configuration }) {
await this.request({
SetUplink: {
Configuration: Uplink.configurationToBuild(configuration),
},
});
}
/**
* Deletes an uplink configuration.
* @param options
*/
async deleteUplink({ remoteAddress }) {
await this.request({
DeleteUplink: {
RemoteAddress: remoteAddress,
},
});
}
}
exports.Uplink = Uplink;
//# sourceMappingURL=uplink.js.map