File size: 1,953 Bytes
a1f1bf8
9bf569f
a1f1bf8
ed37070
 
0b598b9
 
a1f1bf8
 
 
0b598b9
 
 
a1f1bf8
 
 
0b598b9
98847a8
 
 
 
 
 
 
 
 
 
ed37070
 
9bf569f
 
 
 
ed37070
 
b5bd664
 
 
 
 
 
 
d411f8a
 
 
 
 
 
 
0b598b9
 
a1f1bf8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const VITE_API_SERVER_URL = import.meta.env.VITE_API_SERVER_URL || ''
const VITE_LOAD_VIA_PROXY_URL = import.meta.env.VITE_LOAD_VIA_PROXY_URL === 'true'

console.log(`API Server URL: ${VITE_API_SERVER_URL}`)

class API {
  static async fetchIndex(): Promise<string> {
    const response = await fetch(VITE_API_SERVER_URL + '/')
    if (!response.ok) throw new Error('Failed to fetch index.html')
    return response.text()
  }

  static async fetchStaticFile(path: string): Promise<string> {
    const response = await fetch(`${VITE_API_SERVER_URL}/${path}`)
    if (!response.ok) throw new Error(`Failed to fetch ${path}`)
    return response.text()
  }

  // Rename the method to fetchExamplesByType
  static fetchExamplesByType(type: 'image' | 'audio' | 'video'): Promise<any> {
    return fetch(`${VITE_API_SERVER_URL}/examples/${type}`).then((response) => {
      if (!response.ok) {
        throw new Error(`Failed to fetch examples of type ${type}`)
      }
      return response.json()
    })
  }

  // Add a method to fetch a resource via the proxy endpoint to bypass CORS issues
  static getProxiedUrl(url: string, forceProxy = false): string {
    if (!VITE_LOAD_VIA_PROXY_URL && !forceProxy) {
      return url
    }
    return `${VITE_API_SERVER_URL}/proxy/${encodeURIComponent(url)}`
  }

  // Fetch dataset names from the backend, grouped by type
  static async fetchDatasets(): Promise<{ [type: string]: string[] }> {
    const response = await fetch(VITE_API_SERVER_URL + '/datasets')
    if (!response.ok) throw new Error('Failed to fetch datasets')
    return response.json()
  }

  // Fetch descriptions and model descriptions from the backend
  static async fetchDescriptions(): Promise<{ descriptions: any; model_descriptions: any }> {
    const response = await fetch(VITE_API_SERVER_URL + '/descriptions')
    if (!response.ok) throw new Error('Failed to fetch descriptions')
    return response.json()
  }
}

export default API