/** * Backend API Service * Client for communicating with AegisAI backend */ import { API_CONFIG } from '../constants'; import type { AnalysisResponse, IncidentResponse, StatsResponse } from '../types'; const API_BASE = API_CONFIG.BASE_URL; /** * Analyze a frame using backend * @param base64Image - Base64 encoded image * @returns Analysis result */ export const analyzeFrameViaBackend = async ( base64Image: string ): Promise => { try { const response = await fetch(`${API_BASE}/api/analyze`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ image: base64Image }) }); if (!response.ok) { throw new Error(`API error: ${response.status}`); } const data = await response.json(); return data; } catch (error) { console.error('Backend analysis error:', error); return null; } }; /** * Get recent incidents from backend */ export const getIncidents = async ( limit = 50, severity?: string ): Promise => { try { const params = new URLSearchParams({ limit: limit.toString() }); if (severity) params.append('severity', severity); const response = await fetch(`${API_BASE}/api/incidents?${params}`); if (!response.ok) { throw new Error(`API error: ${response.status}`); } const data = await response.json(); return data.incidents || data; } catch (error) { console.error('Failed to fetch incidents:', error); return []; } }; /** * Get system statistics from backend */ export const getStats = async (): Promise => { try { const response = await fetch(`${API_BASE}/api/stats`); if (!response.ok) { throw new Error(`API error: ${response.status}`); } return await response.json(); } catch (error) { console.error('Failed to fetch stats:', error); return null; } }; /** * Check backend health */ export const checkBackendHealth = async (): Promise => { try { const response = await fetch(`${API_BASE}/health`, { signal: AbortSignal.timeout(5000) // 5 second timeout }); return response.ok; } catch (error) { console.error('Backend health check failed:', error); return false; } };