| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 'use strict';
- const { parseXML, childAttr, required } = require('../parser');
- const { fragment } = require('xmlbuilder2');
- const {
- createDoc,
- energyInteropPayloadsNs,
- energyInteropNs,
- } = require('../shared');
- async function parse(input) {
- const json = await parseXML(input);
- const o =
- json['oadrPayload']['$$']['oadrSignedObject'][0]['$$'][
- 'oadrRequestEvent'
- ][0]['$$']['eiRequestEvent'][0]['$$'];
- const result = {
- _type: 'oadrRequestEvent',
- requestId: required(childAttr(o, 'requestID'), 'requestID'),
- venId: required(childAttr(o, 'venID'), 'venID'),
- };
- const replyLimit = childAttr(o, 'replyLimit');
- if (replyLimit != null) result.replyLimit = replyLimit;
- return result;
- }
- function serializeEiRequestEvent(requestId, venId, replyLimit) {
- const replyLimitFrag =
- replyLimit != null
- ? fragment()
- .ele(energyInteropPayloadsNs, 'pyld:replyLimit')
- .txt(replyLimit)
- : fragment();
- return fragment()
- .ele(energyInteropPayloadsNs, 'pyld:requestID')
- .txt(requestId)
- .up()
- .ele(energyInteropNs, 'ei:venID')
- .txt(venId)
- .up()
- .import(replyLimitFrag);
- }
- function serialize(obj) {
- const doc = createDoc()
- .ele('@oadr2b', 'oadr2b:oadrPayload')
- .ele('oadr2b:oadrSignedObject')
- .ele('oadr2b:oadrRequestEvent')
- .att(energyInteropNs, 'ei:schemaVersion', '2.0b')
- .ele('@pyld', 'pyld:eiRequestEvent')
- .import(serializeEiRequestEvent(obj.requestId, obj.venId, obj.replyLimit))
- .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['oadrRequestEvent'] != null;
- }
- function canSerialize(message) {
- return message._type === 'oadrRequestEvent';
- }
- module.exports = {
- parse,
- serialize,
- canParse,
- canSerialize,
- };
|