const API_BASE = import.meta.env.VITE_API_URL || '/api'

async function request<T>(endpoint: string, options?: RequestInit): Promise<T> {
  const response = await fetch(`${API_BASE}${endpoint}`, {
    headers: { 'Content-Type': 'application/json' },
    ...options,
  })
  if (!response.ok) {
    throw new Error(`API error: ${response.status} ${response.statusText}`)
  }
  return response.json()
}

export const api = {
  getCameras: () => request<[]>('/cameras'),
  getCameraStatus: (id: string) => request<[]>(`/cameras/${id}/status`),
  getSystemHealth: () => request<[]>('/system/health'),
  toggleRecording: (cameraId: string) =>
    request<[]>(`/cameras/${cameraId}/recording`, { method: 'POST' }),
}
