xiot-core-spec-ts
Version:
XIOT Specification Codec
77 lines (76 loc) • 4.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const XepRecordDeviceAdded_1 = require("../../typedef/xep/impl/XepRecordDeviceAdded");
const XepRecordType_1 = require("../../typedef/xep/XepRecordType");
const XepRecordDeviceSummaryChanged_1 = require("../../typedef/xep/impl/XepRecordDeviceSummaryChanged");
const XepRecordDeviceRemovedCodec_1 = require("./XepRecordDeviceRemovedCodec");
const XepRecordEventOccurred_1 = require("../../typedef/xep/impl/XepRecordEventOccurred");
const XepRecordDeviceEventOccurredCodec_1 = require("./XepRecordDeviceEventOccurredCodec");
const XepRecordPropertiesChanged_1 = require("../../typedef/xep/impl/XepRecordPropertiesChanged");
const XepRecordDeviceSummaryChangedCodec_1 = require("./XepRecordDeviceSummaryChangedCodec");
const XepRecordDevicePropertiesChangedCodec_1 = require("./XepRecordDevicePropertiesChangedCodec");
const XepRecordDeviceAddedCodec_1 = require("./XepRecordDeviceAddedCodec");
const XepRecordDeviceRemoved_1 = require("../../typedef/xep/impl/XepRecordDeviceRemoved");
class XepRecordCodec {
static encodeObject(record) {
let payload = {};
switch (record.type()) {
case XepRecordType_1.XepRecordType.DEVICE_ADDED:
if (record instanceof XepRecordDeviceAdded_1.XepRecordDeviceAdded) {
payload = XepRecordDeviceAddedCodec_1.XepRecordDeviceAddedCodec.encodeObject(record);
}
break;
case XepRecordType_1.XepRecordType.DEVICE_REMOVED:
if (record instanceof XepRecordDeviceRemoved_1.XepRecordDeviceRemoved) {
payload = XepRecordDeviceRemovedCodec_1.XepRecordDeviceRemovedCodec.encodeObject(record);
}
break;
case XepRecordType_1.XepRecordType.DEVICE_EVENT_OCCURRED:
if (record instanceof XepRecordEventOccurred_1.XepRecordEventOccurred) {
payload = XepRecordDeviceEventOccurredCodec_1.XepRecordDeviceEventOccurredCodec.encodeObject(record);
}
break;
case XepRecordType_1.XepRecordType.DEVICE_PROPERTIES_CHANGED:
if (record instanceof XepRecordPropertiesChanged_1.XepRecordPropertiesChanged) {
payload = XepRecordDevicePropertiesChangedCodec_1.XepRecordDevicePropertiesChangedCodec.encodeObject(record);
}
break;
case XepRecordType_1.XepRecordType.DEVICE_SUMMARY_CHANGED:
if (record instanceof XepRecordDeviceSummaryChanged_1.XepRecordDeviceSummaryChanged) {
payload = XepRecordDeviceSummaryChangedCodec_1.XepRecordDeviceSummaryChangedCodec.encodeObject(record);
}
break;
default:
break;
}
return {
'class': record.type().toString(),
'payload': payload
};
}
static decodeObject(o) {
const payload = o.payload;
let record = null;
switch (XepRecordType_1.XepRecordTypeFromString(o.class)) {
case XepRecordType_1.XepRecordType.DEVICE_ADDED:
record = XepRecordDeviceAddedCodec_1.XepRecordDeviceAddedCodec.decodeObject(payload);
break;
case XepRecordType_1.XepRecordType.DEVICE_SUMMARY_CHANGED:
record = XepRecordDeviceSummaryChangedCodec_1.XepRecordDeviceSummaryChangedCodec.decodeObject(payload);
break;
case XepRecordType_1.XepRecordType.DEVICE_PROPERTIES_CHANGED:
record = XepRecordDevicePropertiesChangedCodec_1.XepRecordDevicePropertiesChangedCodec.decodeObject(payload);
break;
case XepRecordType_1.XepRecordType.DEVICE_EVENT_OCCURRED:
record = XepRecordDeviceEventOccurredCodec_1.XepRecordDeviceEventOccurredCodec.decodeObject(payload);
break;
case XepRecordType_1.XepRecordType.DEVICE_REMOVED:
record = XepRecordDeviceRemovedCodec_1.XepRecordDeviceRemovedCodec.decodeObject(payload);
break;
default:
break;
}
return record;
}
}
exports.XepRecordCodec = XepRecordCodec;