// /pages/api/cpl/getAnalogInputsHandler.ts import { NextApiRequest, NextApiResponse } from "next"; import path from "path"; import fs from "fs"; export default async function handler( req: NextApiRequest, res: NextApiResponse ) { const mode = process.env.NEXT_PUBLIC_CPL_MODE; 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 fileContent = fs.readFileSync(filePath, "utf-8"); function extractArray(name) { const match = fileContent.match( new RegExp(`var\\s+${name}\\s*=\\s*\\[([\\s\\S]*?)\\];`) ); return match ? match[1].split(",").map((s) => s.trim().replace(/^["']|["']$/g, "")) : []; } const result = { win_analogInputsValues: extractArray("win_analogInputsValues").map( Number ), win_analogInputsNames: extractArray("win_analogInputsNames"), 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 ), }; // Begrenzung auf maximal 8 Elemente je Array Object.keys(result).forEach((key) => { if (Array.isArray(result[key])) { result[key] = result[key].slice(0, 8); } }); return res.status(200).json(result); } return res.status(400).json({ error: "Unsupported mode" }); }