register-party.js 2.0 KB

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