| |
| |
| |
| |
|
|
| import { apiClient } from '../client' |
| import type { |
| Proxy, |
| ProxyAccountSummary, |
| ProxyQualityCheckResult, |
| CreateProxyRequest, |
| UpdateProxyRequest, |
| PaginatedResponse, |
| AdminDataPayload, |
| AdminDataImportResult |
| } from '@/types' |
|
|
| |
| |
| |
| |
| |
| |
| |
| export async function list( |
| page: number = 1, |
| pageSize: number = 20, |
| filters?: { |
| protocol?: string |
| status?: 'active' | 'inactive' |
| search?: string |
| }, |
| options?: { |
| signal?: AbortSignal |
| } |
| ): Promise<PaginatedResponse<Proxy>> { |
| const { data } = await apiClient.get<PaginatedResponse<Proxy>>('/admin/proxies', { |
| params: { |
| page, |
| page_size: pageSize, |
| ...filters |
| }, |
| signal: options?.signal |
| }) |
| return data |
| } |
|
|
| |
| |
| |
| |
| export async function getAll(): Promise<Proxy[]> { |
| const { data } = await apiClient.get<Proxy[]>('/admin/proxies/all') |
| return data |
| } |
|
|
| |
| |
| |
| |
| export async function getAllWithCount(): Promise<Proxy[]> { |
| const { data } = await apiClient.get<Proxy[]>('/admin/proxies/all', { |
| params: { with_count: 'true' } |
| }) |
| return data |
| } |
|
|
| |
| |
| |
| |
| |
| export async function getById(id: number): Promise<Proxy> { |
| const { data } = await apiClient.get<Proxy>(`/admin/proxies/${id}`) |
| return data |
| } |
|
|
| |
| |
| |
| |
| |
| export async function create(proxyData: CreateProxyRequest): Promise<Proxy> { |
| const { data } = await apiClient.post<Proxy>('/admin/proxies', proxyData) |
| return data |
| } |
|
|
| |
| |
| |
| |
| |
| |
| export async function update(id: number, updates: UpdateProxyRequest): Promise<Proxy> { |
| const { data } = await apiClient.put<Proxy>(`/admin/proxies/${id}`, updates) |
| return data |
| } |
|
|
| |
| |
| |
| |
| |
| export async function deleteProxy(id: number): Promise<{ message: string }> { |
| const { data } = await apiClient.delete<{ message: string }>(`/admin/proxies/${id}`) |
| return data |
| } |
|
|
| |
| |
| |
| |
| |
| |
| export async function toggleStatus(id: number, status: 'active' | 'inactive'): Promise<Proxy> { |
| return update(id, { status }) |
| } |
|
|
| |
| |
| |
| |
| |
| export async function testProxy(id: number): Promise<{ |
| success: boolean |
| message: string |
| latency_ms?: number |
| ip_address?: string |
| city?: string |
| region?: string |
| country?: string |
| country_code?: string |
| }> { |
| const { data } = await apiClient.post<{ |
| success: boolean |
| message: string |
| latency_ms?: number |
| ip_address?: string |
| city?: string |
| region?: string |
| country?: string |
| country_code?: string |
| }>(`/admin/proxies/${id}/test`) |
| return data |
| } |
|
|
| |
| |
| |
| |
| |
| export async function checkProxyQuality(id: number): Promise<ProxyQualityCheckResult> { |
| const { data } = await apiClient.post<ProxyQualityCheckResult>(`/admin/proxies/${id}/quality-check`) |
| return data |
| } |
|
|
| |
| |
| |
| |
| |
| export async function getStats(id: number): Promise<{ |
| total_accounts: number |
| active_accounts: number |
| total_requests: number |
| success_rate: number |
| average_latency: number |
| }> { |
| const { data } = await apiClient.get<{ |
| total_accounts: number |
| active_accounts: number |
| total_requests: number |
| success_rate: number |
| average_latency: number |
| }>(`/admin/proxies/${id}/stats`) |
| return data |
| } |
|
|
| |
| |
| |
| |
| |
| export async function getProxyAccounts(id: number): Promise<ProxyAccountSummary[]> { |
| const { data } = await apiClient.get<ProxyAccountSummary[]>(`/admin/proxies/${id}/accounts`) |
| return data |
| } |
|
|
| |
| |
| |
| |
| |
| export async function batchCreate( |
| proxies: Array<{ |
| protocol: string |
| host: string |
| port: number |
| username?: string |
| password?: string |
| }> |
| ): Promise<{ |
| created: number |
| skipped: number |
| }> { |
| const { data } = await apiClient.post<{ |
| created: number |
| skipped: number |
| }>('/admin/proxies/batch', { proxies }) |
| return data |
| } |
|
|
| export async function batchDelete(ids: number[]): Promise<{ |
| deleted_ids: number[] |
| skipped: Array<{ id: number; reason: string }> |
| }> { |
| const { data } = await apiClient.post<{ |
| deleted_ids: number[] |
| skipped: Array<{ id: number; reason: string }> |
| }>('/admin/proxies/batch-delete', { ids }) |
| return data |
| } |
|
|
| export async function exportData(options?: { |
| ids?: number[] |
| filters?: { |
| protocol?: string |
| status?: 'active' | 'inactive' |
| search?: string |
| } |
| }): Promise<AdminDataPayload> { |
| const params: Record<string, string> = {} |
| if (options?.ids && options.ids.length > 0) { |
| params.ids = options.ids.join(',') |
| } else if (options?.filters) { |
| const { protocol, status, search } = options.filters |
| if (protocol) params.protocol = protocol |
| if (status) params.status = status |
| if (search) params.search = search |
| } |
| const { data } = await apiClient.get<AdminDataPayload>('/admin/proxies/data', { params }) |
| return data |
| } |
|
|
| export async function importData(payload: { |
| data: AdminDataPayload |
| }): Promise<AdminDataImportResult> { |
| const { data } = await apiClient.post<AdminDataImportResult>('/admin/proxies/data', payload) |
| return data |
| } |
|
|
| export const proxiesAPI = { |
| list, |
| getAll, |
| getAllWithCount, |
| getById, |
| create, |
| update, |
| delete: deleteProxy, |
| toggleStatus, |
| testProxy, |
| checkProxyQuality, |
| getStats, |
| getProxyAccounts, |
| batchCreate, |
| batchDelete, |
| exportData, |
| importData |
| } |
|
|
| export default proxiesAPI |
|
|