'use strict'; const logger = require('../../logger'); const { parse } = require('../../xml/register-party'); const { serialize: serializeCreatedPartyRegistration } = require('../../xml/register-party/created-party-registration'); const { serialize: serializeCanceledPartyRegistration } = require('../../xml/register-party/canceled-party-registration'); const { cancelParty, query, registerParty, } = require('../../processes/registration'); exports.postController = async (req, res) => { const xmlRequest = req.body; let parsedRequest; let xmlResponse; let serialize; try { parsedRequest = await parse(xmlRequest); let response; switch(parsedRequest._type) { case 'oadrCreatePartyRegistration': serialize = serializeCreatedPartyRegistration; response = await registerParty(parsedRequest, req.clientCertificateCn, req.clientCertificateFingerprint); break; case 'oadrCancelPartyRegistration': serialize = serializeCanceledPartyRegistration; response = await cancelParty(parsedRequest, req.clientCertificateCn, req.clientCertificateFingerprint); break; case 'oadrQueryRegistration': serialize = serializeCreatedPartyRegistration; response = await query(parsedRequest, req.clientCertificateCn, req.clientCertificateFingerprint); break; default: throw new Error(`Unknown _type: ${parsedRequest._type}`); } xmlResponse = serialize(response); } catch (e) { logger.warn('Error occurred processing', parsedRequest, e); const responseRequestId = (parsedRequest != null) ? parsedRequest.requestId : ''; xmlResponse = serialize({ responseCode: e.responseCode || '454', responseDescription: e.message || 'Unknown error', responseRequestId: responseRequestId || '' }); } res.set('Content-Type', 'application/xml'); res.send(xmlResponse); res.end(); }; exports.postErrorHandler = (error, next) => { logger.warn('Error in EiRegisterParty', { error }); next(error); };