register-party.js 2.1 KB

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