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 1/2] 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' }); + } +} From 796f6d448c835e06c993a0a2d2d8f8396fc4a0b9 Mon Sep 17 00:00:00 2001 From: Shrutesh Date: Wed, 26 Feb 2025 11:49:33 +0530 Subject: [PATCH 2/2] Update batch.ts --- src/pages/api/batch.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/pages/api/batch.ts b/src/pages/api/batch.ts index 93632d11..0557d4da 100644 --- a/src/pages/api/batch.ts +++ b/src/pages/api/batch.ts @@ -22,7 +22,13 @@ export default async function handler(req, res) { const mockRes = { ...res, - end: () => {}, // Prevent premature response closure + status: (code) => { + res.status(code); + return mockRes; + }, + json: (data) => res.json(data), + setHeader: (key, value) => res.setHeader(key, value), + end: () => {}, }; await sendHandler(mockReq, mockRes);