Files

45 lines
1.4 KiB
JavaScript

import { applyCors, isAllowedOrigin } from './_cors.js';
import { getBcConfig, getBCToken } from '../bc-runtime.js';
import { previewBusinessCentralCpnp, previewBusinessCentralSync } from '../bc-sync-runtime.js';
function setCors(req, res) {
applyCors(req, res, 'POST, OPTIONS');
}
export default async function handler(req, res) {
setCors(req, res);
if (req.method === 'OPTIONS') return res.status(204).end();
const origin = req.headers.origin;
if (origin && !isAllowedOrigin(origin)) {
return res.status(403).json({ error: 'Forbidden' });
}
if (req.method !== 'POST') {
return res.status(405).json({ error: 'Method not allowed' });
}
const { headers, row, articleNo, cpnpNo } = req.body || {};
try {
const config = getBcConfig();
const token = await getBCToken(config);
if (Array.isArray(headers) && Array.isArray(row)) {
const preview = await previewBusinessCentralSync(config, token, headers, row);
return res.json({ success: true, ...preview });
}
if (articleNo && cpnpNo !== undefined) {
const preview = await previewBusinessCentralCpnp(config, token, articleNo, cpnpNo);
return res.json({ success: true, ...preview });
}
return res.status(400).json({ error: 'Missing headers/row or articleNo/cpnpNo' });
} catch (err) {
console.error('[bc-sync-preview] error:', err.message);
return res.status(500).json({ success: false, error: err.message });
}
}