Alpha123B's picture
Add API client
22feef8 verified
Raw
History Blame Contribute Delete
1.76 kB
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;