mirror of
https://github.com/fawney19/Aether.git
synced 2026-01-03 08:12:26 +08:00
- Add proxy field to ProviderEndpoint database model with migration - Add ProxyConfig Pydantic model for proxy URL validation - Extend HTTP client pool with create_client_with_proxy method - Integrate proxy configuration in chat_handler_base.py and cli_handler_base.py - Update admin API endpoints to support proxy configuration CRUD - Add proxy configuration UI in frontend EndpointFormDialog Fixes #28
90 lines
2.1 KiB
TypeScript
90 lines
2.1 KiB
TypeScript
import client from '../client'
|
|
import type { ProviderEndpoint } from './types'
|
|
|
|
/**
|
|
* 代理配置类型
|
|
*/
|
|
export interface ProxyConfig {
|
|
url: string
|
|
username?: string
|
|
password?: string
|
|
}
|
|
|
|
/**
|
|
* 获取指定 Provider 的所有 Endpoints
|
|
*/
|
|
export async function getProviderEndpoints(providerId: string): Promise<ProviderEndpoint[]> {
|
|
const response = await client.get(`/api/admin/endpoints/providers/${providerId}/endpoints`)
|
|
return response.data
|
|
}
|
|
|
|
/**
|
|
* 获取 Endpoint 详情
|
|
*/
|
|
export async function getEndpoint(endpointId: string): Promise<ProviderEndpoint> {
|
|
const response = await client.get(`/api/admin/endpoints/${endpointId}`)
|
|
return response.data
|
|
}
|
|
|
|
/**
|
|
* 为 Provider 创建新的 Endpoint
|
|
*/
|
|
export async function createEndpoint(
|
|
providerId: string,
|
|
data: {
|
|
provider_id: string
|
|
api_format: string
|
|
base_url: string
|
|
custom_path?: string
|
|
auth_type?: string
|
|
auth_header?: string
|
|
headers?: Record<string, string>
|
|
timeout?: number
|
|
max_retries?: number
|
|
priority?: number
|
|
weight?: number
|
|
max_concurrent?: number
|
|
rate_limit?: number
|
|
is_active?: boolean
|
|
config?: Record<string, any>
|
|
proxy?: ProxyConfig
|
|
}
|
|
): Promise<ProviderEndpoint> {
|
|
const response = await client.post(`/api/admin/endpoints/providers/${providerId}/endpoints`, data)
|
|
return response.data
|
|
}
|
|
|
|
/**
|
|
* 更新 Endpoint
|
|
*/
|
|
export async function updateEndpoint(
|
|
endpointId: string,
|
|
data: Partial<{
|
|
base_url: string
|
|
custom_path: string
|
|
auth_type: string
|
|
auth_header: string
|
|
headers: Record<string, string>
|
|
timeout: number
|
|
max_retries: number
|
|
priority: number
|
|
weight: number
|
|
max_concurrent: number
|
|
rate_limit: number
|
|
is_active: boolean
|
|
config: Record<string, any>
|
|
proxy: ProxyConfig
|
|
}>
|
|
): Promise<ProviderEndpoint> {
|
|
const response = await client.put(`/api/admin/endpoints/${endpointId}`, data)
|
|
return response.data
|
|
}
|
|
|
|
/**
|
|
* 删除 Endpoint
|
|
*/
|
|
export async function deleteEndpoint(endpointId: string): Promise<{ message: string; deleted_keys_count: number }> {
|
|
const response = await client.delete(`/api/admin/endpoints/${endpointId}`)
|
|
return response.data
|
|
}
|