import axios from 'axios'; const API_BASE = '/api'; const api = axios.create({ baseURL: API_BASE, timeout: 600000, // 10 min timeout for long operations }); export const ingestUrl = async (url) => { const response = await api.post('/ingest/url', { url }); return response.data; }; export const ingestUpload = async (file, onProgress) => { const formData = new FormData(); formData.append('file', file); const response = await api.post('/ingest/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' }, onUploadProgress: (progressEvent) => { const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total); if (onProgress) onProgress(percent); }, }); return response.data; }; export const getSessionStatus = async (sessionId) => { const response = await api.get(`/session/${sessionId}/status`); return response.data; }; export const analyzeVideo = async (sessionId, numClips = 5) => { const response = await api.post(`/session/${sessionId}/analyze`, { num_clips: numClips }); return response.data; }; export const generateClips = async (sessionId, clips) => { const response = await api.post(`/session/${sessionId}/generate`, { clips }); return response.data; }; export const getClipsStatus = async (sessionId) => { const response = await api.get(`/session/${sessionId}/clips`); return response.data; }; export const getConfig = async () => { const response = await api.get('/config'); return response.data; }; export const deleteSession = async (sessionId) => { const response = await api.delete(`/session/${sessionId}`); return response.data; }; export const getClipDownloadUrl = (clipId) => `${API_BASE}/clip/${clipId}/download`; export default api;