From a1c11fbb3cccaf8dc91ffde0e81a2555fdb71374 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Thu, 19 Jun 2025 22:23:10 +0530 Subject: [PATCH] Added a new method for file download and correct csv is getting added. --- server/controllers/monitorController.js | 3 +-- server/middleware/responseHandler.js | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/server/controllers/monitorController.js b/server/controllers/monitorController.js index 612fc328f..024a18a27 100755 --- a/server/controllers/monitorController.js +++ b/server/controllers/monitorController.js @@ -727,8 +727,7 @@ class MonitorController { const csv = pkg.unparse(csvData); - return res.success({ - msg: this.stringService.monitorsExported, + return res.file({ data: csv, headers: { "Content-Type": "text/csv", diff --git a/server/middleware/responseHandler.js b/server/middleware/responseHandler.js index e051e3fa5..5169e7160 100755 --- a/server/middleware/responseHandler.js +++ b/server/middleware/responseHandler.js @@ -45,6 +45,21 @@ const responseHandler = (req, res, next) => { data, }); }; + + /** + * Sends a raw file response (for CSV, PDF, etc.) + * @param {Object} options + * @param {Buffer|string} options.data - The file content + * @param {Object} options.headers - Headers to set (e.g. Content-Type, Content-Disposition) + * @param {number} [options.status=200] - HTTP status code + */ + res.file = ({ data, headers = {}, status = 200 }) => { + Object.entries(headers).forEach(([key, value]) => { + res.setHeader(key, value); + }); + return res.status(status).send(data); + }; + next(); };