| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 'use strict';
- const logger = require('../../logger');
- const { pollForEvents } = require('../../processes/event');
- const { pollForReports } = require('../../processes/report');
- const { serialize } = require('../../xml');
- exports.postController = async (req, res) => {
- const parsedRequest = req.xml;
- let xmlResponse;
- try {
- let jsonResponse;
- switch (parsedRequest._type) {
- case 'oadrPoll':
- jsonResponse = await pollForEvents(
- parsedRequest,
- req.clientCertificateCn,
- req.clientCertificateFingerprint,
- );
- if (!jsonResponse) {
- jsonResponse = await pollForReports(
- parsedRequest,
- req.clientCertificateCn,
- req.clientCertificateFingerprint,
- );
- }
- break;
- default:
- throw new Error(`Unknown _type: ${parsedRequest._type}`);
- }
- if (!jsonResponse) {
- jsonResponse = {
- _type: 'oadrResponse',
- responseCode: '200',
- responseDescription: 'OK',
- responseRequestId: parsedRequest.requestId || '',
- venId: req.clientCertificateFingerprint,
- };
- }
- xmlResponse = serialize(jsonResponse);
- } catch (e) {
- logger.warn('Error occurred processing', parsedRequest, e);
- const responseRequestId =
- parsedRequest != null ? parsedRequest.requestId : '';
- xmlResponse = serialize({
- _type: 'oadrResponse',
- 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 OadrPoll', { error });
- next(error);
- };
|