cancel-party-registration.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. 'use strict';
  2. const { parseXML, childAttr, required } = require('../parser');
  3. const { createDoc, energyInteropNs } = require('../shared');
  4. const { fragment } = require('xmlbuilder2');
  5. async function parse(input) {
  6. const json = await parseXML(input);
  7. const o =
  8. json['oadrPayload']['$$']['oadrSignedObject'][0]['$$'][
  9. 'oadrCancelPartyRegistration'
  10. ][0]['$$'];
  11. const result = {
  12. _type: 'oadrCancelPartyRegistration',
  13. requestId: required(childAttr(o, 'requestID'), 'requestID'),
  14. registrationId: required(childAttr(o, 'registrationID'), 'registrationID'),
  15. };
  16. const venId = childAttr(o, 'venID');
  17. if (venId != null) result.venId = venId;
  18. return result;
  19. }
  20. function serialize(obj) {
  21. const venId =
  22. obj.venId != null
  23. ? fragment()
  24. .ele(energyInteropNs, 'ei:venID')
  25. .txt(obj.venId)
  26. : fragment();
  27. const doc = createDoc()
  28. .ele('@oadr2b', 'oadr2b:oadrPayload')
  29. .ele('oadr2b:oadrSignedObject')
  30. .ele('oadr2b:oadrCancelPartyRegistration')
  31. .att(energyInteropNs, 'ei:schemaVersion', '2.0b')
  32. .ele('@pyld', 'pyld:requestID')
  33. .txt(obj.requestId)
  34. .up()
  35. .ele('@ei', 'ei:registrationID')
  36. .txt(obj.registrationId)
  37. .up()
  38. .import(venId)
  39. .doc();
  40. return doc.end({ headless: true, prettyPrint: false });
  41. }
  42. async function canParse(input) {
  43. const json = await parseXML(input);
  44. const o = json['oadrPayload']['$$']['oadrSignedObject'][0]['$$'];
  45. return o['oadrCancelPartyRegistration'] != null;
  46. }
  47. function canSerialize(message) {
  48. return message._type === 'oadrCancelPartyRegistration';
  49. }
  50. module.exports = {
  51. parse,
  52. serialize,
  53. canParse,
  54. canSerialize,
  55. };