// /pages/api/cpl/getDigitalOutputsJsonHandler.ts import { NextApiRequest, NextApiResponse } from "next"; import path from "path"; import fs from "fs/promises"; export default async function handler( req: NextApiRequest, res: NextApiResponse ) { const mode = process.env.NEXT_PUBLIC_CPL_MODE ?? "json"; if (mode === "json") { // Lese JSON-Datei z. B. digitalOutputsMockData.json const filePath = path.join( process.cwd(), "mocks/api/SERVICE/digitalOutputsMockData.json" ); const content = await fs.readFile(filePath, "utf-8"); const data = JSON.parse(content); return res.status(200).json(data); } if (mode === "jsmock") { // Lese Datei und extrahiere window-Variablen aus .js-Datei const filePath = path.join( process.cwd(), "mocks/device-cgi-simulator/SERVICE/digitalOutputsMockData.js" ); const fileContent = await fs.readFile(filePath, "utf-8"); const stateMatch = fileContent.match(/win_da_state\s*=\s*\[([^\]]*)\]/); const labelMatch = fileContent.match( /win_da_bezeichnung\s*=\s*\[([^\]]*)\]/ ); const win_da_state = stateMatch?.[1]?.split(",").map((x) => parseInt(x.trim())) || []; const win_da_bezeichnung = labelMatch?.[1]?.split(",").map((x) => x.trim().replace(/["']/g, "")) || []; return res.status(200).json({ win_da_state, win_da_bezeichnung }); } return res.status(400).json({ error: "Unsupported mode" }); }