wanshenmean
2026-03-13 d18970b451b863b465e356e2a5e4576707a17355
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import axios from 'axios'
import type {
  InstanceListItem,
  InstanceState,
  InstanceConfig
} from '../types'
 
const api = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL || '/api',
  headers: {
    'Content-Type': 'application/json'
  }
})
 
// 获取所有实例
export async function getAllInstances(): Promise<InstanceListItem[]> {
  const response = await api.get<InstanceListItem[]>('/SimulatorInstances')
  return response.data
}
 
// 获取指定实例状态
export async function getInstance(id: string): Promise<InstanceState | null> {
  try {
    const response = await api.get<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}`)
    return response.data
  } catch (error) {
    if (axios.isAxiosError(error) && error.response?.status === 404) {
      return null
    }
    throw error
  }
}
 
// 获取实例配置
export async function getInstanceConfig(id: string): Promise<InstanceConfig | null> {
  try {
    const response = await api.get<InstanceConfig>(`/SimulatorInstances/${encodeURIComponent(id)}/config`)
    return response.data
  } catch (error) {
    if (axios.isAxiosError(error) && error.response?.status === 404) {
      return null
    }
    throw error
  }
}
 
// 创建实例
export async function createInstance(config: InstanceConfig): Promise<InstanceState | null> {
  try {
    const response = await api.post<InstanceState>('/SimulatorInstances', config)
    return response.data
  } catch (error) {
    console.error('创建实例失败:', error)
    return null
  }
}
 
// 更新实例
export async function updateInstance(id: string, config: InstanceConfig): Promise<InstanceState | null> {
  try {
    const response = await api.put<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}`, config)
    return response.data
  } catch (error) {
    console.error('更新实例失败:', error)
    return null
  }
}
 
// 删除实例
export async function deleteInstance(id: string, deleteConfig: boolean = true): Promise<boolean> {
  try {
    await api.delete(`/SimulatorInstances/${encodeURIComponent(id)}?deleteConfig=${deleteConfig}`)
    return true
  } catch (error) {
    console.error('删除实例失败:', error)
    return false
  }
}
 
// 启动实例
export async function startInstance(id: string): Promise<InstanceState | null> {
  try {
    const response = await api.post<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}/start`)
    return response.data
  } catch (error) {
    console.error('启动实例失败:', error)
    return null
  }
}
 
// 停止实例
export async function stopInstance(id: string): Promise<InstanceState | null> {
  try {
    const response = await api.post<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}/stop`)
    return response.data
  } catch (error) {
    console.error('停止实例失败:', error)
    return null
  }
}
 
// 重启实例
export async function restartInstance(id: string): Promise<InstanceState | null> {
  try {
    const response = await api.post<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}/restart`)
    return response.data
  } catch (error) {
    console.error('重启实例失败:', error)
    return null
  }
}
 
export default api