From 05943bbe5ef16b7cd9cc4b301afb12529518a796 Mon Sep 17 00:00:00 2001 From: kukulaka Date: Thu, 3 Sep 2020 16:32:49 +0100 Subject: [PATCH] put some error catching in there --- api/src/middleware/response-manager.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/api/src/middleware/response-manager.ts b/api/src/middleware/response-manager.ts index 33f5059814..7d58d1a684 100644 --- a/api/src/middleware/response-manager.ts +++ b/api/src/middleware/response-manager.ts @@ -2,11 +2,12 @@ * middleware to manage actions on responses such as * export / import and caching * @todo move set caching into here. - * @todo error catching for export + * @todo error catching for * */ import { RequestHandler } from 'express'; import asyncHandler from 'express-async-handler'; +import { ExportFailedException } from '../exceptions'; const responseManager: RequestHandler = asyncHandler(async (req, res, next) => { if (!req.query.export) { @@ -30,12 +31,15 @@ const responseManager: RequestHandler = asyncHandler(async (req, res, next) => { const exportData = res.locals.data.data; const json2csvParser = new Parser(); - const csv = await json2csvParser.parse(exportData); - - // will this be ok for larger files? - res.setHeader('Content-disposition', 'attachment; filename=export.csv'); - res.set('Content-Type', 'text/csv'); - res.status(200).send(csv); + try { + const csv = await json2csvParser.parse(exportData); + // will this be ok for larger files? + res.setHeader('Content-disposition', 'attachment; filename=export.csv'); + res.set('Content-Type', 'text/csv'); + res.status(200).send(csv); + } catch (err) { + throw new ExportFailedException('CSV parse failed.'); + } } }