Alpha123B commited on
Commit
22feef8
·
verified ·
1 Parent(s): 1673c88

Add API client

Browse files
Files changed (1) hide show
  1. frontend/src/api/client.js +61 -0
frontend/src/api/client.js ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import axios from 'axios';
2
+
3
+ const API_BASE = '/api';
4
+
5
+ const api = axios.create({
6
+ baseURL: API_BASE,
7
+ timeout: 600000, // 10 min timeout for long operations
8
+ });
9
+
10
+ export const ingestUrl = async (url) => {
11
+ const response = await api.post('/ingest/url', { url });
12
+ return response.data;
13
+ };
14
+
15
+ export const ingestUpload = async (file, onProgress) => {
16
+ const formData = new FormData();
17
+ formData.append('file', file);
18
+
19
+ const response = await api.post('/ingest/upload', formData, {
20
+ headers: { 'Content-Type': 'multipart/form-data' },
21
+ onUploadProgress: (progressEvent) => {
22
+ const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);
23
+ if (onProgress) onProgress(percent);
24
+ },
25
+ });
26
+ return response.data;
27
+ };
28
+
29
+ export const getSessionStatus = async (sessionId) => {
30
+ const response = await api.get(`/session/${sessionId}/status`);
31
+ return response.data;
32
+ };
33
+
34
+ export const analyzeVideo = async (sessionId, numClips = 5) => {
35
+ const response = await api.post(`/session/${sessionId}/analyze`, { num_clips: numClips });
36
+ return response.data;
37
+ };
38
+
39
+ export const generateClips = async (sessionId, clips) => {
40
+ const response = await api.post(`/session/${sessionId}/generate`, { clips });
41
+ return response.data;
42
+ };
43
+
44
+ export const getClipsStatus = async (sessionId) => {
45
+ const response = await api.get(`/session/${sessionId}/clips`);
46
+ return response.data;
47
+ };
48
+
49
+ export const getConfig = async () => {
50
+ const response = await api.get('/config');
51
+ return response.data;
52
+ };
53
+
54
+ export const deleteSession = async (sessionId) => {
55
+ const response = await api.delete(`/session/${sessionId}`);
56
+ return response.data;
57
+ };
58
+
59
+ export const getClipDownloadUrl = (clipId) => `${API_BASE}/clip/${clipId}/download`;
60
+
61
+ export default api;