import { API_BASE_URL } from './api-config'; /** * ExternalAPI - Wrapper für externe API-Aufrufe mit HTTPS-Unterstützung * Enthält Logik für Offline-Fallback und Behandlung von selbstsignierten Zertifikaten */ export class ExternalAPI { private baseURL: string; constructor() { this.baseURL = API_BASE_URL; } /** * Führt einen API-Request durch mit Unterstützung für selbstsignierte Zertifikate * im Entwicklungsmodus */ async fetch(endpoint: string, options: RequestInit = {}): Promise { const url = `${this.baseURL}${endpoint}`; try { const response = await fetch(url, { ...options, headers: { 'Content-Type': 'application/json', ...options.headers, }, // Im Browser werden selbstsignierte Zertifikate über die Browser-Einstellungen akzeptiert // Die fetch API im Browser hat keine Option zum Ignorieren von Zertifikaten }); if (!response.ok) { throw new Error(`API Error: ${response.status}`); } return await response.json(); } catch (error) { console.error('API Fehler:', error); // Prüfen auf Zertifikatsfehler if (error instanceof Error && error.message.includes('certificate')) { console.warn('Zertifikatsfehler: Bitte akzeptieren Sie das selbstsignierte Zertifikat manuell, indem Sie direkt auf https://192.168.0.105:5000 zugreifen und es bestätigen.'); } throw error; } } // API-Methoden für verschiedene Endpoints async getPrinters() { return this.fetch('/api/printers'); } async getJobs() { return this.fetch('/api/jobs'); } }