From de8f5c4413dddeaabac072f92a93168a275c4dd8 Mon Sep 17 00:00:00 2001 From: Shrutesh Sharma <102956391+shrutesh1@users.noreply.github.com> Date: Thu, 20 Feb 2025 11:11:27 +0530 Subject: [PATCH] Added batching --- src/pages/api/batch.ts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/pages/api/batch.ts diff --git a/src/pages/api/batch.ts b/src/pages/api/batch.ts new file mode 100644 index 00000000..93632d11 --- /dev/null +++ b/src/pages/api/batch.ts @@ -0,0 +1,35 @@ +import sendHandler from './send'; + +export default async function handler(req, res) { + if (req.method !== 'POST') { + res.setHeader('Allow', ['POST']); + return res.status(405).end(`Method ${req.method} Not Allowed`); + } + + const events = req.body; + + if (!Array.isArray(events)) { + return res.status(400).json({ error: 'Invalid payload, expected an array.' }); + } + + try { + for (const event of events) { + const mockReq = { + ...req, + body: event, + headers: { ...req.headers, origin: req.headers.origin || 'http://localhost:3000' }, + }; + + const mockRes = { + ...res, + end: () => {}, // Prevent premature response closure + }; + + await sendHandler(mockReq, mockRes); + } + + return res.status(200).json({ success: true, message: `${events.length} events processed.` }); + } catch (error) { + return res.status(500).json({ error: 'Internal Server Error' }); + } +}