// /pages/api/cpl/getAnalogInputsHandler.ts import { NextApiRequest, NextApiResponse } from "next"; import fs from "fs"; import path from "path"; export default function handler(req: NextApiRequest, res: NextApiResponse) { const mode = process.env.NEXT_PUBLIC_CPL_MODE; try { if (mode === "json") { const filePath = path.join( process.cwd(), "mocks/api/SERVICE/analogInputsMockData.json" ); const content = fs.readFileSync(filePath, "utf-8"); const data = JSON.parse(content); return res.status(200).json(data); } if (mode === "jsmock") { const filePath = path.join( process.cwd(), "mocks/device-cgi-simulator/SERVICE/analogInputsMockData.js" ); const content = fs.readFileSync(filePath, "utf-8"); function extractArray(name: string): any[] { const match = content.match( new RegExp(`var\\s+${name}\\s*=\\s*\\[([\\s\\S]*?)\\];`) ); if (!match) return []; return match[1] .split(",") .map((s) => s.trim().replace(/^["']|["']$/g, "")) .slice(0, 8); } const responseData = { win_analogInputsValues: extractArray("win_analogInputsValues").map( Number ), win_analogInputsLabels: extractArray("win_analogInputsLabels"), win_analogInputsOffset: extractArray("win_analogInputsOffset").map( Number ), win_analogInputsFactor: extractArray("win_analogInputsFactor").map( Number ), win_analogInputsLoggerIntervall: extractArray( "win_analogInputsLoggerIntervall" ).map(Number), win_analogInputsUnits: extractArray("win_analogInputsUnits"), win_analogInputsWeighting: extractArray( "win_analogInputsWeighting" ).map(Number), }; console.log("Analog Inputs Mock Data:", responseData); return res.status(200).json(responseData); } return res.status(400).json({ error: "Unsupported mode" }); } catch (error) { console.error("❌ Fehler beim Lesen der analogen Eingänge:", error); return res.status(500).json({ error: "Fehler beim Lesen der Datei" }); } }