103 lines
No EOL
3.9 KiB
JavaScript
103 lines
No EOL
3.9 KiB
JavaScript
/**
|
|
* @file Abfrage-Skript für den SAP Endpoint Service.
|
|
* Dieses Skript sendet eine Liste von API-Endpunkten an den lokalen FastAPI-Bulk-Service,
|
|
* wertet die Ergebnisse aus und gibt sie formatiert in der Konsole aus.
|
|
* @author MBT
|
|
* @version 1.0
|
|
*/
|
|
const path = require('path');
|
|
require('dotenv').config({ path: path.resolve(__dirname, '../../src/.env') });
|
|
|
|
/**
|
|
* @typedef {Object} EndpointResult
|
|
* @property {string} endpoint - Der geprüfte SAP-Endpunkt.
|
|
* @property {string} status - Der SAP-Status (z. B. "Deprecated", "active", "Unbekannt").
|
|
* @property {string} message - Die detaillierte Statusmeldung der SAP-Prüfung.
|
|
*/
|
|
|
|
/**
|
|
* @typedef {Object} BulkApiResponse
|
|
* @property {number} total_checked - Die Gesamtanzahl der geprüften Endpunkte.
|
|
* @property {EndpointResult[]} results - Die Liste der einzelnen Prüfergebnisse.
|
|
*/
|
|
|
|
/**
|
|
* Liste der SAP-Endpunkte, die auf Änderungen oder Deprecations geprüft werden sollen.
|
|
* @type {string[]}
|
|
*/
|
|
const endpointsToCheck = [
|
|
"v1/inventories"
|
|
];
|
|
|
|
/**
|
|
* Erstellt die URL-Query-Parameter für die Bulk-Abfrage.
|
|
* Jedes Element aus `endpointsToCheck` wird als separater "endpoints"-Parameter angehängt.
|
|
* @type {URLSearchParams}
|
|
*/
|
|
const params = new URLSearchParams();
|
|
endpointsToCheck.forEach(ep => {
|
|
params.append("endpoints", ep);
|
|
});
|
|
|
|
/**
|
|
* Die Ziel-URL für den lokalen FastAPI-Bulk-Endpunkt.
|
|
* @type {string}
|
|
*/
|
|
const url = `http://127.0.0.1:8000/informations/bulk?${params.toString()}`;
|
|
|
|
|
|
const apiKeysString = process.env.APIKEYS || "";
|
|
const firstApiKey = apiKeysString.split(",")[0].trim();
|
|
|
|
const headers = {
|
|
"X-API-Key": firstApiKey
|
|
};
|
|
|
|
// Führt den HTTP-Call an die FastAPI aus
|
|
fetch(url, {
|
|
method: "GET",
|
|
headers: headers
|
|
})
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
throw new Error(`HTTP-Fehler! Status: ${response.status}`);
|
|
}
|
|
return response.json(); // Wandelt die Antwort in ein echtes JS-Objekt um
|
|
})
|
|
.then(data => {
|
|
// 1. Komplette Antwort ausgeben (ohne [Array]-Kürzung durch Node.js)
|
|
console.log("Gesamtes API-Feedback:");
|
|
console.log(JSON.stringify(data, null, 2));
|
|
|
|
// 2. Ergebnisse im Detail durchgehen und die berechneten SAP-Daten anzeigen
|
|
if (data && data.results) {
|
|
console.log("\n=== SAP API-Statusbericht ===");
|
|
data.results.forEach(item => {
|
|
console.log(`\nEndpunkt: ${item.endpoint}`);
|
|
console.log(`Status: ${item.status}`);
|
|
console.log(`Meldung: ${item.message || 'Keine Meldung vorhanden.'}`);
|
|
|
|
// Nur ausgeben, wenn wir echte Datumsdaten vom Server erhalten haben
|
|
if (item.deprecated && item.deprecated.length > 0) {
|
|
const [qDate, pDate] = item.deprecated;
|
|
const [qDecom, pDecom] = item.decommissioned;
|
|
|
|
console.log(`\n --- Upgrade- & Rückbaufristen ---`);
|
|
console.log(` [Q-System] Abgekündigt: ${qDate} --> Geplanter Rückbau (+1 Jahr): ${qDecom}`);
|
|
console.log(` [P-System] Abgekündigt: ${pDate} --> Geplanter Rückbau (+1 Jahr): ${pDecom}`);
|
|
} else {
|
|
console.log(`\n --> Keine anstehenden Abkündigungen oder Fristen für diesen Endpunkt.`);
|
|
}
|
|
console.log("----------------------------------------------------------------------");
|
|
});
|
|
} else {
|
|
console.log("Keine 'results' im JSON-Response gefunden.");
|
|
}
|
|
})
|
|
.catch(
|
|
/**
|
|
* Catch-Block für Netzwerk- oder Verarbeitungsfehler.
|
|
* @param {Error} error - Das aufgetretene Fehler-Objekt.
|
|
*/
|
|
error => console.error("Fehler bei der Abfrage:", error)
|
|
); |