xiot-core-spec-ts
Version:
XIOT Specification Codec
41 lines (40 loc) • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Spec_1 = require("../../typedef/constant/Spec");
const DeviceDefinition_1 = require("../../typedef/definition/DeviceDefinition");
const DeviceType_1 = require("../../typedef/definition/urn/DeviceType");
const ServiceTypeCodec_1 = require("./type/ServiceTypeCodec");
const DescriptionCodec_1 = require("./DescriptionCodec");
class DeviceDefinitionCodec {
static decodeArray(list) {
const array = [];
list.forEach(o => {
array.push(DeviceDefinitionCodec.decode(o));
});
return array;
}
static decode(o) {
const type = new DeviceType_1.DeviceType(o[Spec_1.Spec.TYPE]);
const description = DescriptionCodec_1.DescriptionCodec.decode(o[Spec_1.Spec.DESCRIPTION]);
const requiredServices = ServiceTypeCodec_1.ServiceTypeCodec.decodeArray(o[Spec_1.Spec.REQUIRED_SERVICES]);
const optionalServices = ServiceTypeCodec_1.ServiceTypeCodec.decodeArray(o[Spec_1.Spec.OPTIONAL_SERVICES]);
return new DeviceDefinition_1.DeviceDefinition(type, description, requiredServices, optionalServices);
}
static encode(def) {
const o = {
type: def.type.toString(),
description: DescriptionCodec_1.DescriptionCodec.encode(def.description),
};
if (def.requiredServices.length > 0) {
o[Spec_1.Spec.REQUIRED_SERVICES] = ServiceTypeCodec_1.ServiceTypeCodec.encodeArray(def.requiredServices);
}
if (def.optionalServices.length > 0) {
o[Spec_1.Spec.OPTIONAL_SERVICES] = ServiceTypeCodec_1.ServiceTypeCodec.encodeArray(def.optionalServices);
}
return o;
}
static encodeArray(list) {
return list.map(x => DeviceDefinitionCodec.encode(x));
}
}
exports.DeviceDefinitionCodec = DeviceDefinitionCodec;