generated from CubeCraft-Creations/Tracehound
21 lines
710 B
TypeScript
21 lines
710 B
TypeScript
|
|
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' }),
|
||
|
|
}
|