oadr-poll.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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]['$$']['oadrPoll'][0]['$$'];
  8. return {
  9. _type: 'oadrPoll',
  10. venId: required(childAttr(o, 'venID'), 'venID'),
  11. };
  12. }
  13. function serialize(obj) {
  14. const doc = createDoc()
  15. .ele('@oadr2b', 'oadr2b:oadrPayload')
  16. .ele('oadr2b:oadrSignedObject')
  17. .ele('oadr2b:oadrPoll')
  18. .att(energyInteropNs, 'ei:schemaVersion', '2.0b')
  19. .ele(energyInteropNs, 'ei:venID')
  20. .txt(obj.venId)
  21. .up()
  22. .doc();
  23. return doc.end({ headless: true, prettyPrint: false });
  24. }
  25. async function canParse(input) {
  26. const json = await parseXML(input);
  27. const o = json['oadrPayload']['$$']['oadrSignedObject'][0]['$$'];
  28. return o['oadrPoll'] != null;
  29. }
  30. function canSerialize(message) {
  31. return message._type === 'oadrPoll';
  32. }
  33. module.exports = {
  34. parse,
  35. serialize,
  36. canParse,
  37. canSerialize,
  38. };