query-registration.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. 'use strict';
  2. const { parseXML, childAttr, required } = require('../parser');
  3. const { createDoc, energyInteropNs } = require('../shared');
  4. async function parse(input) {
  5. const json = await parseXML(input);
  6. const o =
  7. json['oadrPayload']['$$']['oadrSignedObject'][0]['$$'][
  8. 'oadrQueryRegistration'
  9. ][0]['$$'];
  10. return {
  11. _type: 'oadrQueryRegistration',
  12. requestId: required(childAttr(o, 'requestID'), 'requestID'),
  13. };
  14. }
  15. function serialize(obj) {
  16. const doc = createDoc()
  17. .ele('@oadr2b', 'oadr2b:oadrPayload')
  18. .ele('oadr2b:oadrSignedObject')
  19. .ele('oadr2b:oadrQueryRegistration')
  20. .att(energyInteropNs, 'ei:schemaVersion', '2.0b')
  21. .ele('@pyld', 'pyld:requestID')
  22. .txt(obj.requestId)
  23. .doc();
  24. return doc.end({ headless: true, prettyPrint: false });
  25. }
  26. async function canParse(input) {
  27. const json = await parseXML(input);
  28. const o = json['oadrPayload']['$$']['oadrSignedObject'][0]['$$'];
  29. return o['oadrQueryRegistration'] != null;
  30. }
  31. function canSerialize(message) {
  32. return message._type === 'oadrQueryRegistration';
  33. }
  34. module.exports = {
  35. parse,
  36. serialize,
  37. canParse,
  38. canSerialize,
  39. };