feat: Automate Buy Box tracker sync from Dropbox and improve parsing robustness

This commit is contained in:
Christian Vidal Wolf
2026-02-05 08:39:39 +01:00
parent c4ad999619
commit 09e06bad16
3 changed files with 93 additions and 18 deletions
+38
View File
@@ -0,0 +1,38 @@
import type { VercelRequest, VercelResponse } from '@vercel/node';
const BUYBOX_DROPBOX_URL = "https://www.dropbox.com/scl/fi/dooz56abib51ifaf42cpx/Buy_Box_tracker.xlsx?rlkey=2sx85bne42fju3d8vekfygzau&st=t4n5fbcg&dl=1";
export default async function handler(req: VercelRequest, res: VercelResponse) {
// CORS headers
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
if (req.method === 'OPTIONS') {
return res.status(200).end();
}
try {
console.log('[fetch-buybox] Fetching Buy Box tracker from Dropbox...');
const response = await fetch(BUYBOX_DROPBOX_URL, {
cache: 'no-store',
headers: {
'Pragma': 'no-cache',
'Cache-Control': 'no-cache'
}
});
if (!response.ok) {
throw new Error(`Dropbox responded with ${response.status}`);
}
const buffer = await response.arrayBuffer();
console.log('[fetch-buybox] Successfully fetched Buy Box Excel, size:', buffer.byteLength);
res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
res.status(200).send(Buffer.from(buffer));
} catch (error: any) {
console.error('[fetch-buybox] Error:', error);
res.status(500).json({ error: error.message });
}
}