diff --git a/src/api/bangumi.ts b/src/api/bangumi.ts index 17e28900..133cabdd 100644 --- a/src/api/bangumi.ts +++ b/src/api/bangumi.ts @@ -1,25 +1,75 @@ import axios from 'axios'; import type { BangumiItem } from '#/bangumi'; -/** - * 添加番剧订阅 - * @param type 'new' 添加新番, ’old‘ 添加旧番 - * @param rss_link - */ -function addBangumi(type: string, rss_link: string) { - if (type === 'new') { - return axios.post('api/v1/subscribe', { rss_link }); - } else if (type === 'old') { - return axios.post('api/v1/collection', { rss_link }); - } else { - console.error('type错误, type应为 new 或 old'); - return false; - } -} +export const apiBangumi = { + /** + * 获取所有 bangumi 数据 + * @returns 所有 bangumi 数据 + */ + async getAll() { + const { data } = await axios.get('api/v1/bangumi/getAll'); -/** - * 获取订阅番剧数据 - */ -const getABData = () => axios.get('api/v1/bangumi/getAll'); + return data; + }, -export { addBangumi, getABData }; + /** + * 获取指定 bangumiId 的数据 + * @param bangumiId 需要获取数据的 bangumi 的 id + * @returns 获取指定 bangumi 的数据 + */ + async getData(bangumiId: number) { + const { data } = await axios.get( + `api/v1/bangumi/getData/${bangumiId}` + ); + + return data; + }, + + /** + * 更新指定 bangumiId 的数据 + * @param bangumiData - 需要更新的数据 + * @returns axios 请求返回的数据 + */ + async updateData(bangumiData: BangumiItem) { + const { data } = await axios.post('api/v1/bangumi/updateData', bangumiData); + return data; + }, + + /** + * 删除指定 bangumiId 的数据 + * @param bangumiId - 需要删除的 bangumi 的 id + * @returns axios 请求返回的数据 + */ + async deleteData(bangumiId: number) { + const { data } = await axios.delete( + `api/v1/bangumi/deleteData/${bangumiId}` + ); + return data; + }, + + /** + * 删除指定 bangumiId 的规则。如果 file 为 true,则同时删除关联文件。 + * @param bangumiId - 需要删除规则的 bangumi 的 id。 + * @param file - 是否同时删除关联文件。 + * @returns axios 请求返回的数据 + */ + async deleteRule(bangumiId: number, file: boolean) { + const { data } = await axios.delete( + `api/v1/bangumi/deleteRule/${bangumiId}`, + { + params: { + file, + }, + } + ); + return data; + }, + + /** + * 重置所有 bangumi 数据 + */ + async resetAll() { + const { data } = await axios.post('api/v1/bangumi/resetAll'); + return data; + }, +}; diff --git a/src/api/check.ts b/src/api/check.ts new file mode 100644 index 00000000..d27202c7 --- /dev/null +++ b/src/api/check.ts @@ -0,0 +1,27 @@ +import axios from 'axios'; + +export const apiCheck = { + /** + * 检测下载器 + */ + async downloader() { + const { data } = await axios.get('api/v1/check/downloader'); + return data; + }, + + /** + * 检测 RSS + */ + async rss() { + const { data } = await axios.get('api/v1/check/rss'); + return data; + }, + + /** + * 检测所有 + */ + async all() { + const { data } = await axios.get('api/v1/check'); + return data; + }, +}; diff --git a/src/api/config.ts b/src/api/config.ts index 605732cd..b36a2888 100644 --- a/src/api/config.ts +++ b/src/api/config.ts @@ -1,15 +1,24 @@ import axios from 'axios'; import type { Config } from '#/config'; -export async function setConfig(newConfig: Config) { - const { data } = await axios.post<{ - message: 'Success' | 'Failed to update config'; - }>('api/v1/updateConfig', newConfig); +export const apiConfig = { + /** + * 获取 config 数据 + */ + async getConfig() { + const { data } = await axios.get('api/v1/getConfig'); + return data; + }, - return data.message === 'Success'; -} + /** + * 更新 config 数据 + * @param newConfig - 需要更新的 config + */ + async updateConfig(newConfig: Config) { + const { data } = await axios.post<{ + message: 'Success' | 'Failed to update config'; + }>('api/v1/updateConfig', newConfig); -export async function getConfig() { - const { data } = await axios.get('api/v1/getConfig'); - return data; -} + return data.message === 'Success'; + }, +}; diff --git a/src/api/debug.ts b/src/api/debug.ts deleted file mode 100644 index 23f64de8..00000000 --- a/src/api/debug.ts +++ /dev/null @@ -1,15 +0,0 @@ -import axios from 'axios'; - -/** - * 获取AB的日志 - */ -async function getABLog() { - const { data } = await axios.get('api/v1/log'); - return data; -} -/** - * 重置 AB 的数据,程序会在下一轮检索中重新添加 RSS 订阅信息。 - */ -const resetRule = () => axios.get('api/v1/resetRule'); - -export { getABLog, resetRule }; diff --git a/src/api/download.ts b/src/api/download.ts new file mode 100644 index 00000000..a078e9be --- /dev/null +++ b/src/api/download.ts @@ -0,0 +1,43 @@ +import axios from 'axios'; +import type { BangumiItem } from '#/bangumi'; + +type Status = { + status: 'Success' | 'Failed to parse link'; +}; + +export const apiDownload = { + /** + * 解析 RSS 链接 + * @param rss_link - RSS 链接 + */ + async analysis(rss_link: string) { + const { data } = await axios.post('api/v1/download/analysis', { + rss_link, + }); + return data; + }, + + /** + * 旧番 + * @param bangumiData - Bangumi 数据 + */ + async collection(bangumiData: BangumiItem) { + const { data } = await axios.post( + 'api/v1/download/collection', + bangumiData + ); + return data.status === 'Success'; + }, + + /** + * 新番 + * @param bangumiData - Bangumi 数据 + */ + async subscribe(bangumiData: BangumiItem) { + const { data } = await axios.post( + 'api/v1/download/subscribe', + bangumiData + ); + return data.status === 'Success'; + }, +}; diff --git a/src/api/log.ts b/src/api/log.ts new file mode 100644 index 00000000..24660658 --- /dev/null +++ b/src/api/log.ts @@ -0,0 +1,8 @@ +import axios from 'axios'; + +export const apiLog = { + async getLog() { + const { data } = await axios.get('api/v1/log'); + return data; + }, +}; diff --git a/src/api/program.ts b/src/api/program.ts index 21aa334d..c79bd915 100644 --- a/src/api/program.ts +++ b/src/api/program.ts @@ -1,21 +1,49 @@ import axios from 'axios'; -/** 重启 */ -export async function appRestart() { - const { data } = await axios.get<{ status: 'ok' }>('api/v1/restart'); - return data.status === 'ok'; -} +type Success = { + status: 'ok'; +}; -/** 启动 */ -export const appStart = () => axios.get('api/v1/start'); +export const apiProgram = { + /** + * 重启 + */ + async restart() { + const { data } = await axios.get('api/v1/restart'); + return data.status === 'ok'; + }, -/** 停止 */ -export const appStop = () => axios.get('api/v1/stop'); + /** + * 启动 + */ + async start() { + const { data } = await axios.get('api/v1/start'); + return data.status === 'ok'; + }, -/** 状态 */ -export async function appStatus() { - const { data } = await axios.get<{ status: 'stop' | 'running' }>( - 'api/v1/status' - ); - return data.status !== 'stop'; -} + /** + * 停止 + */ + async stop() { + const { data } = await axios.get('api/v1/stop'); + return data.status === 'ok'; + }, + + /** + * 状态 + */ + async status() { + const { data } = await axios.get<{ status: 'running' | 'stop' }>( + 'api/v1/status' + ); + return data.status === 'running'; + }, + + /** + * 终止 + */ + async shutdown() { + const { data } = await axios.get('api/v1/shutdown'); + return data.status === 'ok'; + }, +};