| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 'use strict';
- const { parseXML, childAttr, required } = require('../parser');
- const { create } = require('xmlbuilder2');
- const oadrPayloadNs = 'http://www.w3.org/2000/09/xmldsig#';
- const oadrNs = 'http://openadr.org/oadr-2.0b/2012/07';
- const energyInteropNs = 'http://docs.oasis-open.org/ns/energyinterop/201110';
- async function parse(input) {
- const json = await parseXML(input);
- const o =
- json['oadrPayload']['$$']['oadrSignedObject'][0]['$$']['oadrPoll'][0]['$$'];
- return {
- _type: 'oadrPoll',
- venId: required(childAttr(o, 'venID'), 'venID'),
- };
- }
- function serialize(obj) {
- const doc = create({
- namespaceAlias: {
- ns: oadrPayloadNs,
- oadr2b: oadrNs,
- ei: energyInteropNs,
- },
- })
- .ele('@oadr2b', 'oadr2b:oadrPayload')
- .ele('oadr2b:oadrSignedObject')
- .ele('oadr2b:oadrPoll')
- .att(energyInteropNs, 'ei:schemaVersion', '2.0b')
- .ele(energyInteropNs, 'ei:venID')
- .txt(obj.venId)
- .up()
- .doc();
- return doc.end({ headless: true, prettyPrint: false });
- }
- async function canParse(input) {
- const json = await parseXML(input);
- const o = json['oadrPayload']['$$']['oadrSignedObject'][0]['$$'];
- return o['oadrPoll'] != null;
- }
- module.exports = {
- parse,
- serialize,
- canParse,
- };
|