blob: e49887e7a03fd449bc4c54575f9fe13d26177325 [file] [log] [blame]
vulgar5201055346a2025-06-05 14:15:55 +08001import request from './request'
2
3/**
4 * 上传种子
5 * @param {FormData} formData - 包含种子文件和相关信息的表单数据
6 * @returns {Promise}
7 */
8export function uploadTorrent(formData) {
9 return request({
10 url: '/torrent/upload',
11 method: 'post',
12 data: formData,
13 headers: {
14 'Content-Type': 'multipart/form-data'
15 }
16 })
17}
18
19/**
vulgar520152afbcf2025-06-07 02:34:46 +080020 * 搜索种子
21 * @param {Object} searchParams - 搜索参数
22 * @param {string} searchParams.keyword - 搜索关键词
23 * @param {string} searchParams.category - 分类
vulgar52019bf462d2025-06-07 17:54:04 +080024
vulgar520152afbcf2025-06-07 02:34:46 +080025 * @param {string} searchParams.sortBy - 排序字段
26 * @param {string} searchParams.sortOrder - 排序方向
27 * @param {number} searchParams.page - 页码
28 * @param {number} searchParams.entriesPerPage - 每页条数
29 * @returns {Promise}
30 */
31export function searchTorrents(searchParams) {
vulgar52019bf462d2025-06-07 17:54:04 +080032 const hasCategory = searchParams.category
33
34 if (hasCategory) {
35 // 使用GET方式,支持category查询参数
36 const queryParams = new URLSearchParams()
37
38 if (searchParams.keyword) {
39 queryParams.append('keyword', searchParams.keyword)
40 }
41 queryParams.append('entriesPerPage', searchParams.entriesPerPage || 20)
42 queryParams.append('page', searchParams.page || 0)
43
44 // 优先使用category参数,如果没有则使用categoryId
45 const categoryValue = searchParams.category || searchParams.categoryId
46 if (categoryValue) {
47 queryParams.append('category', categoryValue)
48 }
49
50 const url = `/torrent/search?${queryParams.toString()}`
51 console.log('🔍 使用GET方式搜索种子,URL:', url)
52
53 return request({
54 url: url,
55 method: 'get'
56 }).catch(error => {
57 console.error('🚨 GET API请求失败:', {
58 url: url,
59 requestedURL: error.config?.url,
60 baseURL: error.config?.baseURL,
61 fullURL: error.config?.baseURL ? error.config.baseURL + error.config.url : error.config?.url,
62 status: error.response?.status,
63 statusText: error.response?.statusText
64 })
65 throw error
vulgar520152afbcf2025-06-07 02:34:46 +080066 })
vulgar52019bf462d2025-06-07 17:54:04 +080067 } else {
68 // 使用POST方式,兼容原有的搜索方式
69 console.log('🔍 使用POST方式搜索种子,参数:', searchParams)
70
71 return request({
72 url: '/torrent/search',
73 method: 'post',
74 data: searchParams
75 }).catch(error => {
76 console.error('🚨 POST API请求失败:', {
77 url: '/torrent/search',
78 requestedURL: error.config?.url,
79 baseURL: error.config?.baseURL,
80 fullURL: error.config?.baseURL ? error.config.baseURL + error.config.url : error.config?.url,
81 status: error.response?.status,
82 statusText: error.response?.statusText
83 })
84 throw error
85 })
86 }
vulgar520152afbcf2025-06-07 02:34:46 +080087}
88
89/**
vulgar5201055346a2025-06-05 14:15:55 +080090 * 获取分类列表
91 * @returns {Promise}
92 */
93export function getCategories() {
vulgar5201c4a15b12025-06-06 13:55:09 +080094 return request({
95 url: '/category/list', // 注意这里不需要加 /api,已经在代理中配置了
96 method: 'get'
97 })
98}
vulgar5201055346a2025-06-05 14:15:55 +080099
100/**
101 * 获取标签列表
102 * @returns {Promise}
103 * 暂时还没有获取标签的列表
104 */
105export function getTags() {
106 console.log('调用获取标签列表API...')
vulgar520152afbcf2025-06-07 02:34:46 +0800107 // 后端没有标签的Controller,返回模拟数据
vulgar5201055346a2025-06-05 14:15:55 +0800108 return new Promise((resolve) => {
109 setTimeout(() => {
110 resolve({
111 data: [
112 { id: 1, name: 'linux' },
vulgar5201c4a15b12025-06-06 13:55:09 +0800113 { id: 2, name: 'ios' },
114 { id: 3, name: 'ubuntu' }
vulgar5201055346a2025-06-05 14:15:55 +0800115 ]
116 })
117 }, 100)
118 })
119 }
120
121/**
122 * 获取种子详情
123 * @param {string} infoHash - 种子的info hash
124 * @returns {Promise}
125 */
126export function getTorrentDetail(infoHash) {
127 return request({
vulgar52014958b252025-06-08 03:26:43 +0800128 url: `/torrent/view/${infoHash}`,
vulgar5201055346a2025-06-05 14:15:55 +0800129 method: 'get'
130 })
vulgar52019469e5c2025-06-09 01:34:47 +0800131}
132
133/**
134 * 下载种子
135 * @param {string} infoHash - 种子的info hash
136 * @returns {Promise}
137 */
138export function downloadTorrent(infoHash) {
139 return request({
140 url: `/torrent/download/${infoHash}`,
141 method: 'get'
142 })
vulgar5201055346a2025-06-05 14:15:55 +0800143}