UNPKG

onvif-nvt

Version:

Wrapper for ONVIF spec to control NVT (Network Video Transitter) devices.

1,159 lines (963 loc) 31.9 kB
const Soap = require('../utils/soap'); const Util = require('../utils/util'); class Core { constructor() { this.soap = new Soap(); this.timeDiff = 0; this.serviceAddress = null; this.username = null; this.password = null; this.namespaceAttributes = ['xmlns:tds="http://www.onvif.org/ver10/device/wsdl"']; } init(serviceAddress, username, password) { this.serviceAddress = serviceAddress; this.username = username; this.password = password; } createRequest(body) { const soapEnvelope = this.soap.createRequest({ body: body, xmlns: this.namespaceAttributes, diff: this.timeDiff, username: this.username, password: this.password }); return soapEnvelope; } buildRequest(methodName, xml, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error(`The "callback" argument for ${methodName} is invalid:` + errMsg)); return; } } if (typeof methodName === 'undefined' || methodName === null) { reject(new Error('The "methodName" argument for buildRequest is required.')); return; } else { if (errMsg = Util.isInvalidValue(methodName, 'string')) { reject(new Error('The "methodName" argument for buildRequest is invalid:' + errMsg)); return; } } let soapBody = ''; if (typeof xml === 'undefined' || xml === null || xml === '') { soapBody += `<tds:${methodName}/>`; } else { soapBody += `<tds:${methodName}>`; soapBody += xml; soapBody += `</tds:${methodName}>`; } const soapEnvelope = this.createRequest(soapBody); this.soap.makeRequest('core', this.serviceAddress, methodName, soapEnvelope).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(results => { callback(null, results); }).catch(error => { callback(error); }); } else { return promise; } } getTimeDiff() { return this.timeDiff; } getWsdlUrl(callback) { return this.buildRequest('GetWsdlUrl', null, callback); } getServices(includeCapability, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for getServices is invalid:' + errMsg)); return; } } if (typeof includeCapability !== 'undefined' && includeCapability !== null) { if (errMsg = Util.isInvalidValue(includeCapability, 'boolean')) { reject(new Error('The "includeCapability" argument for getServices is invalid: ' + errMsg)); return; } } let soapBody = ''; if (typeof includeCapability !== 'undefined' && includeCapability !== null) { soapBody += '<tds:IncludeCapability>' + includeCapability + '</tds:IncludeCapability>'; } this.buildRequest('GetServices', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(results => { callback(null, results); }).catch(error => { callback(error); }); } else { return promise; } } getServiceCapabilities(callback) { return this.buildRequest('GetServiceCapabilities', null, callback); } getCapabilities(callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for getCapabilities is invalid:' + errMsg)); return; } } let soapBody = ''; soapBody += '<tds:Category>All</tds:Category>'; this.buildRequest('GetCapabilities', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(results => { callback(null, results); }).catch(error => { callback(error); }); } else { return promise; } } getHostname(callback) { return this.buildRequest('GetHostname', null, callback); } setHostname(name, callback) { name = name || ''; const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for setHostname is invalid:' + errMsg)); return; } } let soapBody = ''; soapBody += '<tds:Name>' + name + '</tds:Name>'; this.buildRequest('SetHostname', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } setHostnameFromDHCP(fromDHCP, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for setHostnameFromDHCP is invalid:' + errMsg)); return; } } if (errMsg = Util.isInvalidValue(fromDHCP, 'boolean')) { reject(new Error('The "fromDHCP" argument for setHostnameFromDHCP is invalid: ' + errMsg)); return; } let soapBody = ''; soapBody += '<tds:FromDHCP>' + fromDHCP + '</tds:FromDHCP>'; this.buildRequest('SetHostnameFromDHCP', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } getDNS(callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for getDNS is invalid:' + errMsg)); return; } } this.buildRequest('GetDNS').then(result => { try { const di = result.data.DNSInformation; if (!di.SearchDomain) { di.SearchDomain = []; } else if (!Array.isArray(di.SearchDomain)) { di.SearchDomain = [di.SearchDomain]; } if (!di.DNSManual) { di.DNSManual = []; } else if (!Array.isArray(di.DNSManual)) { di.DNSManual = [di.DNSManual]; } result.data = di; } catch (e) {} resolve(result); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } setDNS(fromDHCP, searchDomain, DNSManual, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for setDNS is invalid:' + errMsg)); return; } } if (errMsg = Util.isInvalidValue(fromDHCP, 'boolean')) { reject(new Error('The "fromDHCP" argument for setDNS is invalid: ' + errMsg)); return; } if (typeof searchDomain !== 'undefined' && searchDomain !== null) { if (errMsg = Util.isInvalidValue(searchDomain, 'array', true)) { reject(new Error('The "searchDomain" argument for setDNS is invalid: ' + errMsg)); return; } for (let i = 0; i < searchDomain.length; i++) { if (errMsg = Util.isInvalidValue(searchDomain[i], 'string')) { reject(new Error(`A "searchDomain" property was invalid(${searchDomain[i]}): ` + errMsg)); return; } } } if (typeof DNSManual !== 'undefined' && DNSManual !== null) { if (errMsg = Util.isInvalidValue(DNSManual, 'array', true)) { reject(new Error('The "DNSManual" argument for setDNS is invalid: ' + errMsg)); return; } for (let i = 0; i < DNSManual.length; i++) { const d = DNSManual[i]; if (errMsg = Util.isInvalidValue(d, 'object')) { reject(new Error(`A "DNSManual" property for setDNS is invalid(${JSON.stringify(d)}): ` + errMsg)); return; } const type = d.type; if (errMsg = Util.isInvalidValue(type, 'string')) { reject(new Error('The "type" property for setDNS is invalid: ' + errMsg)); return; } else if (!type.match(/^(IPv4|IPv6)$/)) { reject(new Error('The "type" value for setDNS is invalid: The value must be either "IPv4" or "IPv6".')); return; } if (type === 'IPv4') { if (errMsg = Util.isInvalidValue(d.IPv4Address, 'string')) { reject(new Error('The "IPv4Address" property for setDNS is invalid: ' + errMsg)); return; } } else if (type === 'IPv6') { if (errMsg = Util.isInvalidValue(d.IPv6Address, 'string')) { reject(new Error('The "IPv6Address" property for setDNS is invalid: ' + errMsg)); return; } } } } let soapBody = ''; soapBody += '<tds:FromDHCP>' + fromDHCP + '</tds:FromDHCP>'; if (typeof searchDomain !== 'undefined' && searchDomain !== null) { searchDomain.forEach(s => { soapBody += '<tds:SearchDomain>' + s + '</tds:SearchDomain>'; }); } if (typeof DNSManual !== 'undefined' && DNSManual !== null) { if (DNSManual.length === 0) { soapBody += '<tds:DNSManual></tds:DNSManual>'; } else { DNSManual.forEach(d => { soapBody += '<tds:DNSManual>'; soapBody += '<tt:Type>' + d.type + '</tt:Type>'; if (d.type === 'IPv4') { soapBody += '<tt:IPv4Address>' + d.IPv4Address + '</tt:IPv4Address>'; } else { soapBody += '<tt:IPv6Address>' + d.IPv6Address + '</tt:IPv6Address>'; } soapBody += '</tds:DNSManual>'; }); } } this.buildRequest('SetDNS', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } getNTP(callback) { return this.buildRequest('GetNTP', null, callback); } setNTP(fromDHCP, NTPManual, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for setNTP is invalid:' + errMsg)); return; } } if (errMsg = Util.isInvalidValue(fromDHCP, 'boolean')) { reject(new Error('The "fromDHCP" argument for setNTP is invalid: ' + errMsg)); return; } if (typeof NTPManual !== 'undefined' && NTPManual !== null) { if (errMsg = Util.isInvalidValue(NTPManual, 'array', true)) { reject(new Error('The "NTPManual" argument for setNTP is invalid: ' + errMsg)); return; } for (let i = 0; i < NTPManual.length; i++) { const d = NTPManual[i]; if (errMsg = Util.isInvalidValue(d, 'object')) { reject(new Error(`A "NTPManual" property for setNTP is invalid(${JSON.stringify(d)}): ` + errMsg)); return; } const type = d.type; if (errMsg = Util.isInvalidValue(type, 'string')) { reject(new Error('The "type" property for setNTP is invalid: ' + errMsg)); return; } else if (!type.match(/^(IPv4|IPv6)$/)) { reject(new Error('The "type" value for setNTP is invalid: The value must be either "IPv4" or "IPv6".')); return; } if (type === 'IPv4') { if (errMsg = Util.isInvalidValue(d.IPv4Address, 'string')) { reject(new Error('The "IPv4Address" property for setNTP is invalid: ' + errMsg)); return; } } else if (type === 'IPv6') { if (errMsg = Util.isInvalidValue(d.IPv6Address, 'string')) { reject(new Error('The "IPv6Address" property for setNTP is invalid: ' + errMsg)); return; } } } } let soapBody = ''; soapBody += '<tds:FromDHCP>' + fromDHCP + '</tds:FromDHCP>'; if (typeof NTPManual !== 'undefined' && NTPManual !== null) { if (NTPManual.length === 0) { soapBody += '<tds:NTPManual></tds:NTPManual>'; } else { NTPManual.forEach(d => { soapBody += '<tds:NTPManual>'; soapBody += '<tt:Type>' + d.type + '</tt:Type>'; if (d.type === 'IPv4') { soapBody += '<tt:IPv4Address>' + d.IPv4Address + '</tt:IPv4Address>'; } else { soapBody += '<tt:IPv6Address>' + d.IPv6Address + '</tt:IPv6Address>'; } soapBody += '</tds:NTPManual>'; }); } } this.buildRequest('SetNTP', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } getDynamicDNS(callback) { return this.buildRequest('GetDynamicDNS', null, callback); } setDynamicDNS(type, name, ttl, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for setDynamicDNS is invalid:' + errMsg)); return; } } if (errMsg = Util.isInvalidValue(type, 'string')) { reject(new Error('The "type" argument for setDynamicDNS is invalid: ' + errMsg)); return; } else if (!type.match(/^(NoUpdate|ServerUpdates|ClientUpdates)$/)) { reject(new Error('The "type" value for setDynamicDNS is invalid: The value must be either "IPv4" or "IPv6".')); return; } if (typeof name !== 'undefined' && name !== null) { if (errMsg = Util.isInvalidValue(name, 'string', true)) { reject(new Error('The "name" argument for setDynamicDNS is invalid: ' + errMsg)); return; } } if (typeof ttl !== 'undefined' && ttl !== null) { if (errMsg = Util.isInvalidValue(ttl, 'integer')) { reject(new Error('The "ttl" argument for setDynamicDNS is invalid: ' + errMsg)); return; } } let soapBody = ''; soapBody += '<tds:SetDynamicDNS>'; soapBody += '<tt:Type>' + type + '</tt:Type>'; if (typeof name !== 'undefined' && name !== null) { soapBody += '<tt:Name>' + name + '</tt:Name>'; } if (typeof ttl !== 'undefined' && ttl !== null) { soapBody += '<tt:TTL>' + ttl + '</tt:TTL>'; } soapBody += '</tds:SetDynamicDNS>'; const soapEnvelope = this.createRequest(soapBody); return this.soap.makeRequest('core', this.serviceAddress, 'SetDynamicDNS', soapEnvelope).then(result => { resolve(result); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } getNetworkInterfaces(callback) { return this.buildRequest('GetNetworkInterfaces', null, callback); } setNetworkInterfaces() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getNetworkProtocols(callback) { return this.buildRequest('GetNetworkProtocols', null, callback); } setNetworkProtocols() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getNetworkDefaultGateway(callback) { return this.buildRequest('GetNetworkDefaultGateway', null, callback); } setNetworkDefaultGateway() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getZeroConfiguration(callback) { return this.buildRequest('GetZeroConfiguration', null, callback); } setZeroConfiguration() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getIPAddressFilter(callback) { return this.buildRequest('GetIPAddressFilter', null, callback); } setIPAddressFilter() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } addIPAddressFilter() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } removeIPAddressFilter() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getDot11Capabilities(callback) { return this.buildRequest('GetDot11Capabilities', null, callback); } getDot11Status(interfaceToken, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for getDot11Status is invalid:' + errMsg)); return; } } if (errMsg = Util.isInvalidValue(interfaceToken, 'string')) { reject(new Error('The "interfaceToken" argument for getDot11Status is invalid: ' + errMsg)); return; } let soapBody = ''; soapBody += '<tt:InterfaceToken>' + interfaceToken + '</tt:InterfaceToken>'; this.buildRequest('GetDot11Status', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } scanAvailableDot11Networks(interfaceToken, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for scanAvailableDot11Networks is invalid:' + errMsg)); return; } } if (errMsg = Util.isInvalidValue(interfaceToken, 'string')) { reject(new Error('The "interfaceToken" argument for scanAvailableDot11Networks is invalid: ' + errMsg)); return; } let soapBody = ''; soapBody += '<tt:ReferenceToken>' + interfaceToken + '</tt:ReferenceToken>'; this.buildRequest('ScanAvailableDot11Networks', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } getDeviceInformation(callback) { return this.buildRequest('GetDeviceInformation', null, callback); } getSystemUris(callback) { return this.buildRequest('GetSystemUris', null, callback); } getSystemBackup(callback) { return this.buildRequest('GetSystemBackup', null, callback); } restoreSystem() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } startSystemRestore() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getSystemDateAndTime(callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for getSystemDateAndTime is invalid:' + errMsg)); return; } } this.buildRequest('GetSystemDateAndTime').then(results => { const parsed = this.parseGetSystemDateAndTime(results.data); if (parsed && parsed.date) { const deviceTime = parsed.date.getTime(); const localTime = new Date().getTime(); this.timeDiff = deviceTime - localTime; } resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } parseGetSystemDateAndTime(sdt) { const s0 = sdt; if (!s0) { return null; } const s1 = s0.GetSystemDateAndTimeResponse; if (!s1) { return null; } const s2 = s1.SystemDateAndTime; if (!s2) { return null; } const type = s2.DateTimeType || ''; let dst = null; if (s2.DaylightSavings) { dst = s2.DaylightSavings === 'true'; } const tz = s2.TimeZone && s2.TimeZone.TZ ? s2.TimeZone.TZ : ''; let date = null; if (s2.UTCDateTime) { const udt = s2.UTCDateTime; const t = udt.Time; const d = udt.Date; if (t && d && t.Hour && t.Minute && t.Second && d.Year && d.Month && d.Day) { date = new Date(); date.setUTCFullYear(parseInt(d.Year, 10)); date.setUTCMonth(parseInt(d.Month, 10) - 1); date.setUTCDate(parseInt(d.Day, 10)); date.setUTCHours(parseInt(t.Hour, 10)); date.setUTCMinutes(parseInt(t.Minute, 10)); date.setUTCSeconds(parseInt(t.Second, 10)); } } const res = { type: type, dst: dst, tz: tz, date: date }; return res; } setSystemDateAndTime() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } setSystemFactoryDefault() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } upgradeSystemFirmware() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } startFirmwareUpgrade() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getSystemLog(logType, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for getSystemLog is invalid:' + errMsg)); return; } } if (errMsg = Util.isInvalidValue(logType, 'string')) { reject(new Error('The "logType" argument for getSystemLog is invalid: ' + errMsg)); return; } if (!logType.match(/^(System|Access)$/)) { reject(new Error('The "logType" value for getSystemLog is invalid: The value must be either "System" or "Access".')); return; } let soapBody = ''; soapBody += '<tt:LogType>' + logType + '</tt:LogType>'; this.buildRequest('GetSystemLog', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(result => { callback(null, result); }).catch(error => { callback(error); }); } else { return promise; } } getSystemSupportInformation(callback) { return this.buildRequest('GetSystemSupportInformation', null, callback); } systemReboot(callback) { return this.buildRequest('SystemReboot', null, callback); } getScopes(callback) { return this.buildRequest('GetScopes', null, callback); } setScopes() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } addScopes() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } removeScopes() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getGeoLocation(callback) { return this.buildRequest('GetGeoLocation', null, callback); } setGeoLocation() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } deleteGeoLocation() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getDiscoveryMode(callback) { return this.buildRequest('GetDiscoveryMode', null, callback); } setDiscoveryMode() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getRemoteDiscoveryMode(callback) { return this.buildRequest('GetRemoteDiscoveryMode', null, callback); } setRemoteDiscoveryMode() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getDPAddresses(callback) { return this.buildRequest('GetDPAddresses', null, callback); } setDPAddresses() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getAccessPolicy(callback) { return this.buildRequest('GetAccessPolicy', null, callback); } setAccessPolicy() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getUsers(callback) { return this.buildRequest('GetUsers', null, callback); } createUsers() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } deleteUsers() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } setUser() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } createDot1XConfiguration() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } setDot1XConfiguration() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getDot1XConfiguration(dot1XConfigurationToken, callback) { const promise = new Promise((resolve, reject) => { let errMsg = ''; if (typeof callback !== 'undefined' && callback !== null) { if (errMsg = Util.isInvalidValue(callback, 'function')) { reject(new Error('The "callback" argument for getDot11XConfiguration is invalid:' + errMsg)); return; } } if (errMsg = Util.isInvalidValue(dot1XConfigurationToken, 'string')) { reject(new Error('The "dot1XConfigurationToken" argument for getDot1XConfiguration is invalid: ' + errMsg)); return; } let soapBody = ''; soapBody += '<tds:Dot1XConfigurationToken>' + dot1XConfigurationToken + '</tds:Dot1XConfigurationToken>'; this.buildRequest('GetDot1XConfiguration', soapBody).then(results => { resolve(results); }).catch(error => { reject(error); }); }); if (Util.isValidCallback(callback)) { promise.then(results => { callback(null, results); }).catch(error => { callback(error); }); } else { return promise; } } getDot1XConfigurations(callback) { return this.buildRequest('GetDot1XConfigurations', null, callback); } deleteDot1XConfigurations() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } createCertificate() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getCertificates(callback) { return this.buildRequest('GetCertificates', null, callback); } getCACertificates(callback) { return this.buildRequest('GetCACertificates', null, callback); } getCertificatesStatus(callback) { return this.buildRequest('GetCertificatesStatus', null, callback); } setCertificatesStatus() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getPkcs10Request() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getClientCertificateMode(callback) { return this.buildRequest('GetClientCertificateMode', null, callback); } setClientCertificateMode() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } loadCertificates() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } loadCertificateWithPrivateKey() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getCertificateInformation() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } loadCACertificates() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } deleteCertificates() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getRemoteUser(callback) { return this.buildRequest('GetRemoteUser', null, callback); } setRemoteUser() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } getEndpointReference(callback) { return this.buildRequest('GetEndpointReference', null, callback); } getRelayOutputs(callback) { return this.buildRequest('GetRelayOutputs', null, callback); } setRelayOutputSettings() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } setRelayOutputState() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } sendAuxiliaryCommand() { return new Promise((resolve, reject) => { reject(new Error('Not implemented')); }); } } module.exports = Core;