UNPKG

matterbridge-roborock-vacuum-plugin

Version:
56 lines 1.73 kB
import { randomBytes, randomInt } from 'node:crypto'; import * as CryptoUtils from '../helper/cryptoHelper.js'; export class MessageContext { endpoint; devices = new Map(); nonce; serializeNonce; constructor(userdata) { this.endpoint = CryptoUtils.md5bin(userdata.rriot.k).subarray(8, 14).toString('base64'); this.nonce = randomInt(1000, 1000000); this.serializeNonce = randomBytes(16); } registerDevice(duid, localKey, pv, nonce) { this.devices.set(duid, { localKey: localKey, localProtocolVersion: pv, mqttProtocolVersion: pv, nonce }); } unregisterAllDevices() { this.devices.clear(); } updateNonce(duid, nonce) { const device = this.devices.get(duid); if (device) { device.nonce = nonce; } } updateLocalProtocolVersion(duid, pv) { const device = this.devices.get(duid); if (device) { device.localProtocolVersion = pv; } } updateMQTTProtocolVersion(duid, pv) { const device = this.devices.get(duid); if (device) { device.mqttProtocolVersion = pv; } } getSerializeNonceAsHex() { return this.serializeNonce.toString('hex').toUpperCase(); } getLocalKey(duid) { return this.devices.get(duid)?.localKey; } getLocalProtocolVersion(duid) { return this.devices.get(duid)?.localProtocolVersion; } getMQTTProtocolVersion(duid) { return this.devices.get(duid)?.mqttProtocolVersion; } getDeviceNonce(duid) { return this.devices.get(duid)?.nonce; } getEndpoint() { return this.endpoint; } } //# sourceMappingURL=messageContext.js.map