/*
    Das Script fetchMessagesData.mjs lädt Meldungen von einem CPL-Gerät über eine HTTPS-API für einen angegebenen Zeitraum herunter.
    Es authentifiziert sich mit Benutzername und Passwort, akzeptiert selbst-signierte Zertifikate und speichert die abgerufenen Daten
    als JSON in zwei Dateien ( messages_all.json) im Verzeichnis meldungen. Das Script dient dazu,
    Mockdaten für Tests oder Simulationen aktuell zu halten.
*/

import fetch from "node-fetch";
import https from "https";
import fs from "fs/promises";
import path from "path";
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));

const CPL_URL =
  "https://10.10.0.118/CPL?Service/ae.ACP&MSS1=2025;07;11;2025;08;11;All";
const USERNAME = "Littwin";
const PASSWORD = "Littwin";
const targetDir = path.join(__dirname, "../device-cgi-simulator/meldungen");

async function fetchAndSaveMessages() {
  console.log("Fetch:", CPL_URL);
  const agent = new https.Agent({ rejectUnauthorized: false });
  const res = await fetch(CPL_URL, {
    headers: {
      Authorization:
        "Basic " + Buffer.from(`${USERNAME}:${PASSWORD}`).toString("base64"),
    },
    agent,
  });
  if (!res.ok)
    throw new Error(`Fehler beim Abrufen der Meldungen: ${res.status}`);
  const data = await res.json();
  await fs.mkdir(targetDir, { recursive: true });

  await fs.writeFile(
    path.join(targetDir, "messages_all.json"),
    JSON.stringify(data, null, 2)
  );
}

(async () => {
  try {
    await fetchAndSaveMessages();
    console.log("Meldungen aktualisiert.");
  } catch (e) {
    console.error(e);
  }
})();
