SAP_DM_Deprecated_APIS/demo/testaufruf.js

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)
);