register-party.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. 'use strict';
  2. const logger = require('../../logger');
  3. const { parse } = require('../../xml/register-party');
  4. const { serialize: serializeCreatedPartyRegistration } = require('../../xml/register-party/created-party-registration');
  5. const { serialize: serializeCanceledPartyRegistration } = require('../../xml/register-party/canceled-party-registration');
  6. const {
  7. cancelParty,
  8. query,
  9. registerParty,
  10. } = require('../../processes/registration');
  11. exports.postController = async (req, res) => {
  12. const xmlRequest = req.body;
  13. let parsedRequest;
  14. let xmlResponse;
  15. let serialize;
  16. try {
  17. parsedRequest = await parse(xmlRequest);
  18. let response;
  19. switch(parsedRequest._type) {
  20. case 'oadrCreatePartyRegistration':
  21. serialize = serializeCreatedPartyRegistration;
  22. response = await registerParty(parsedRequest, req.clientCertificateCn, req.clientCertificateFingerprint);
  23. break;
  24. case 'oadrCancelPartyRegistration':
  25. serialize = serializeCanceledPartyRegistration;
  26. response = await cancelParty(parsedRequest, req.clientCertificateCn, req.clientCertificateFingerprint);
  27. break;
  28. case 'oadrQueryRegistration':
  29. serialize = serializeCreatedPartyRegistration;
  30. response = await query(parsedRequest, req.clientCertificateCn, req.clientCertificateFingerprint);
  31. break;
  32. default:
  33. throw new Error(`Unknown _type: ${parsedRequest._type}`);
  34. }
  35. xmlResponse = serialize(response);
  36. } catch (e) {
  37. logger.warn('Error occurred processing', parsedRequest, e);
  38. const responseRequestId = (parsedRequest != null) ? parsedRequest.requestId : '';
  39. xmlResponse = serialize({
  40. responseCode: e.responseCode || '454',
  41. responseDescription: e.message || 'Unknown error',
  42. responseRequestId: responseRequestId || ''
  43. });
  44. }
  45. res.set('Content-Type', 'application/xml');
  46. res.send(xmlResponse);
  47. res.end();
  48. };
  49. exports.postErrorHandler = (error, next) => {
  50. logger.warn('Error in EiRegisterParty', { error });
  51. next(error);
  52. };