64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
// /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
|
|
),
|
|
};
|
|
|
|
return res.status(200).json(result);
|
|
}
|
|
|
|
return res.status(400).json({ error: "Unsupported mode" });
|
|
}
|