| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 'use strict';
- const { parseXML, childAttr, required } = require('../parser');
- const { createDoc, serializeReports, parseReports } = require('../shared');
- async function parse(input) {
- const json = await parseXML(input);
- const o =
- json['oadrPayload']['$$']['oadrSignedObject'][0]['$$'][
- 'oadrUpdateReport'
- ][0]['$$'];
- const requestId = required(childAttr(o, 'requestID'), 'requestID');
- const result = {
- _type: 'oadrUpdateReport',
- requestId: requestId,
- };
- result.reports = parseReports(o['oadrReport'] || []);
- return result;
- }
- function validate(obj) {
- if (!obj.requestId) {
- throw new Error('Missing requestId');
- }
- }
- function serialize(obj) {
- validate(obj);
- const doc = createDoc()
- .ele('@oadr2b', 'oadr2b:oadrPayload')
- .ele('oadr2b:oadrSignedObject')
- .ele('oadr2b:oadrUpdateReport')
- .att('@ei', 'ei:schemaVersion', '2.0b')
- .ele('@pyld', 'pyld:requestID')
- .txt(obj.requestId)
- .up()
- .import(serializeReports(obj.reports))
- .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['oadrUpdateReport'] != null;
- }
- function canSerialize(message) {
- return message._type === 'oadrUpdateReport';
- }
- module.exports = {
- parse,
- serialize,
- canParse,
- canSerialize,
- };
|