register-party.js 1.5 KB

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