| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- 'use strict';
- const { parseXML, childAttr, boolean, required } = require('../parser');
- const { fragment } = require('xmlbuilder2');
- const { createDoc, energyInteropNs, oadrNs } = require('../shared');
- async function parse(input) {
- const json = await parseXML(input);
- const o =
- json['oadrPayload']['$$']['oadrSignedObject'][0]['$$'][
- 'oadrCreatePartyRegistration'
- ][0]['$$'];
- const result = {
- _type: 'oadrCreatePartyRegistration',
- requestId: required(childAttr(o, 'requestID'), 'requestID'),
- oadrProfileName: required(
- childAttr(o, 'oadrProfileName'),
- 'oadrProfileName',
- ),
- oadrTransportName: required(
- childAttr(o, 'oadrTransportName'),
- 'oadrTransportName',
- ),
- oadrReportOnly: required(
- boolean(childAttr(o, 'oadrReportOnly')),
- 'oadrReportOnly',
- ),
- oadrXmlSignature: required(
- boolean(childAttr(o, 'oadrXmlSignature')),
- 'oadrXmlSignature',
- ),
- };
- const registrationId = childAttr(o, 'registrationID');
- const venId = childAttr(o, 'venID');
- const oadrTransportAddress = childAttr(o, 'oadrTransportAddress');
- const oadrVenName = childAttr(o, 'oadrVenName');
- const oadrHttpPullModel = boolean(childAttr(o, 'oadrHttpPullModel'));
- if (registrationId != null) result.registrationId = registrationId;
- if (venId != null) result.venId = venId;
- if (oadrTransportAddress != null)
- result.oadrTransportAddress = oadrTransportAddress;
- if (oadrVenName != null) result.oadrVenName = oadrVenName;
- if (oadrHttpPullModel != null) result.oadrHttpPullModel = oadrHttpPullModel;
- return result;
- }
- function serialize(obj) {
- const registrationId =
- obj.registrationId != null
- ? fragment()
- .ele(energyInteropNs, 'ei:registrationID')
- .txt(obj.registrationId)
- : fragment();
- const venId =
- obj.venId != null
- ? fragment()
- .ele(energyInteropNs, 'ei:venID')
- .txt(obj.venId)
- : fragment();
- const oadrTransportAddress =
- obj.oadrTransportAddress != null
- ? fragment()
- .ele(oadrNs, 'oadr2b:oadrTransportAddress')
- .txt(obj.oadrTransportAddress)
- : fragment();
- const oadrVenName =
- obj.oadrVenName != null
- ? fragment()
- .ele(oadrNs, 'oadr2b:oadrVenName')
- .txt(obj.oadrVenName)
- : fragment();
- const oadrHttpPullModel =
- obj.oadrHttpPullModel != null
- ? fragment()
- .ele(oadrNs, 'oadr2b:oadrHttpPullModel')
- .txt(obj.oadrHttpPullModel)
- : fragment();
- const doc = createDoc()
- .ele('@oadr2b', 'oadr2b:oadrPayload')
- .ele('oadr2b:oadrSignedObject')
- .ele('oadr2b:oadrCreatePartyRegistration')
- .att(energyInteropNs, 'ei:schemaVersion', '2.0b')
- .ele('@pyld', 'pyld:requestID')
- .txt(obj.requestId)
- .up()
- .import(venId)
- .import(registrationId)
- .ele('oadr2b:oadrProfileName')
- .txt(obj.oadrProfileName)
- .up()
- .ele('oadr2b:oadrTransportName')
- .txt(obj.oadrTransportName)
- .up()
- .import(oadrTransportAddress)
- .ele('oadr2b:oadrReportOnly')
- .txt(obj.oadrReportOnly)
- .up()
- .ele('oadr2b:oadrXmlSignature')
- .txt(obj.oadrXmlSignature)
- .up()
- .import(oadrVenName)
- .import(oadrHttpPullModel)
- .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['oadrCreatePartyRegistration'] != null;
- }
- function canSerialize(message) {
- return message._type === 'oadrCreatePartyRegistration';
- }
- module.exports = {
- parse,
- serialize,
- canParse,
- canSerialize,
- };
|