Files
CPLv4.0/pages/api/cpl/getAnalogInputsHandler.ts
2025-06-19 18:02:52 +02:00

68 lines
2.1 KiB
TypeScript

// /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_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),
};
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" });
}
}