UNPKG

xiot-core-spec-ts

Version:
68 lines (67 loc) 3.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceTemplateCodec = void 0; const ServiceTemplate_1 = require("../../typedef/template/ServiceTemplate"); const Spec_1 = require("../../typedef/constant/Spec"); const ServiceType_1 = require("../../typedef/definition/urn/ServiceType"); const DescriptionCodec_1 = require("../definition/DescriptionCodec"); const PropertyTemplateCodec_1 = require("./PropertyTemplateCodec"); const ActionTemplateCodec_1 = require("./ActionTemplateCodec"); const EventTemplateCodec_1 = require("./EventTemplateCodec"); class ServiceTemplateCodec { static decodeArray(array) { const list = []; if (array != null) { for (const o of array) { list.push(ServiceTemplateCodec.decode(o)); } } return list; } static decode(o) { const iid = o[Spec_1.Spec.IID]; const required = o[Spec_1.Spec.X_REQUIRED]; const propertyAddable = o[Spec_1.Spec.X_PROPERTY_ADDABLE]; const actionAddable = o[Spec_1.Spec.X_ACTION_ADDABLE]; const eventAddable = o[Spec_1.Spec.X_ACTION_ADDABLE]; const source = o[Spec_1.Spec.X_SOURCE]; const type = new ServiceType_1.ServiceType(o[Spec_1.Spec.TYPE]); const description = DescriptionCodec_1.DescriptionCodec.decode(o[Spec_1.Spec.DESCRIPTION]); const properties = PropertyTemplateCodec_1.PropertyTemplateCodec.decodeArray(o[Spec_1.Spec.PROPERTIES]); const actions = ActionTemplateCodec_1.ActionTemplateCodec.decodeArray(o[Spec_1.Spec.ACTIONS]); const events = EventTemplateCodec_1.EventTemplateCodec.decodeArray(o[Spec_1.Spec.EVENTS]); return new ServiceTemplate_1.ServiceTemplate(iid, required, type, description, properties, actions, events, propertyAddable, actionAddable, eventAddable, source); } static encode(service) { const o = { iid: service.iid, type: service.type.toString(), description: DescriptionCodec_1.DescriptionCodec.encode(service.description) }; if (service.properties.size > 0) { o[Spec_1.Spec.PROPERTIES] = PropertyTemplateCodec_1.PropertyTemplateCodec.encodeArray(service.properties); } if (service.actions.size > 0) { o[Spec_1.Spec.ACTIONS] = ActionTemplateCodec_1.ActionTemplateCodec.encodeArray(service.actions); } if (service.events.size > 0) { o[Spec_1.Spec.EVENTS] = EventTemplateCodec_1.EventTemplateCodec.encodeArray(service.events); } o[Spec_1.Spec.X_REQUIRED] = service.required; o[Spec_1.Spec.X_PROPERTY_ADDABLE] = service.propertyAddable; o[Spec_1.Spec.X_ACTION_ADDABLE] = service.actionAddable; o[Spec_1.Spec.X_EVENT_ADDABLE] = service.eventAddable; if (service.source) { o[Spec_1.Spec.X_SOURCE] = service.source; } return o; } static encodeArray(services) { const array = []; services.forEach(service => { array.push(ServiceTemplateCodec.encode(service)); }); return array; } } exports.ServiceTemplateCodec = ServiceTemplateCodec;