chore: move Auto_Bangumi_WebUI -> Auto_Bangumi_WebUI/webui/, prepare for merge into AutoBangumi repo

This commit is contained in:
zthxxx
2023-06-05 23:47:00 +08:00
parent dc95c1a62f
commit 684e124480
99 changed files with 0 additions and 0 deletions

41
webui/src/api/auth.ts Normal file
View File

@@ -0,0 +1,41 @@
import type { LoginSuccess, Logout, Update } from '#/auth';
export const apiAuth = {
async login(username: string, password: string) {
const formData = new URLSearchParams({
username,
password,
});
const { data } = await axios.post<LoginSuccess>(
'api/v1/auth/login',
formData,
{
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
}
);
return data;
},
async refresh() {
const { data } = await axios.get<LoginSuccess>('api/v1/auth/refresh_token');
return data;
},
async logout() {
const { data } = await axios.get<Logout>('api/v1/auth/logout');
return data.message === 'logout success';
},
async update(username: string, password: string) {
const { data } = await axios.post<Update>('api/v1/auth/update', {
username,
password,
});
return data;
},
};

97
webui/src/api/bangumi.ts Normal file
View File

@@ -0,0 +1,97 @@
import type { BangumiRule } from '#/bangumi';
import type { ApiSuccess } from '#/api';
export const apiBangumi = {
/**
* 获取所有 bangumi 数据
* @returns 所有 bangumi 数据
*/
async getAll() {
const { data } = await axios.get<BangumiRule[]>('api/v1/bangumi/getAll');
return data;
},
/**
* 获取指定 bangumiId 的规则
* @param bangumiId bangumi id
* @returns 指定 bangumi 的规则
*/
async getRule(bangumiId: number) {
const { data } = await axios.get<BangumiRule>(
`api/v1/bangumi/getRule/${bangumiId}`
);
return data;
},
/**
* 更新指定 bangumiId 的规则
* @param bangumiData - 需要更新的规则
* @returns axios 请求返回的数据
*/
async updateRule(bangumiRule: BangumiRule) {
const { data } = await axios.post<ApiSuccess>(
'api/v1/bangumi/updateRule',
bangumiRule
);
return data;
},
/**
* 删除指定 bangumiId 的数据库规则,会在重新匹配到后重建
* @param bangumiId - 需要删除的 bangumi 的 id
* @param file - 是否同时删除关联文件。
* @returns axios 请求返回的数据
*/
async deleteRule(bangumiId: number, file: boolean) {
const { data } = await axios.delete<ApiSuccess>(
`api/v1/bangumi/deleteRule/${bangumiId}`,
{
params: {
file,
},
}
);
return data;
},
/**
* 删除指定 bangumiId 的规则。如果 file 为 true则同时删除关联文件。
* @param bangumiId - 需要删除规则的 bangumi 的 id。
* @param file - 是否同时删除关联文件。
* @returns axios 请求返回的数据
*/
async disableRule(bangumiId: number, file: boolean) {
const { data } = await axios.delete<ApiSuccess>(
`api/v1/bangumi/disableRule/${bangumiId}`,
{
params: {
file,
},
}
);
return data;
},
/**
* 启用指定 bangumiId 的规则
* @param bangumiId - 需要启用的 bangumi 的 id
*/
async enableRule(bangumiId: number) {
const { data } = await axios.get<ApiSuccess>(
`api/v1/bangumi/enableRule/${bangumiId}`
);
return data;
},
/**
* 重置所有 bangumi 数据
*/
async resetAll() {
const { data } = await axios.get<{
message: 'OK';
}>('api/v1/bangumi/resetAll');
return data;
},
};

25
webui/src/api/check.ts Normal file
View File

@@ -0,0 +1,25 @@
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;
},
};

23
webui/src/api/config.ts Normal file
View File

@@ -0,0 +1,23 @@
import type { Config } from '#/config';
export const apiConfig = {
/**
* 获取 config 数据
*/
async getConfig() {
const { data } = await axios.get<Config>('api/v1/getConfig');
return data;
},
/**
* 更新 config 数据
* @param newConfig - 需要更新的 config
*/
async updateConfig(newConfig: Config) {
const { data } = await axios.post<{
message: 'Success' | 'Failed to update config';
}>('api/v1/updateConfig', newConfig);
return data.message === 'Success';
},
};

61
webui/src/api/download.ts Normal file
View File

@@ -0,0 +1,61 @@
import type { BangumiRule } from '#/bangumi';
interface Status {
status: 'Success';
}
interface AnalysisError {
status: 'Failed to parse link';
}
export const apiDownload = {
/**
* 解析 RSS 链接
* @param rss_link - RSS 链接
*/
async analysis(rss_link: string) {
const fetchResult = createEventHook<BangumiRule>();
const fetchError = createEventHook<AnalysisError>();
axios
.post<any>('api/v1/download/analysis', {
rss_link,
})
.then(({ data }) => {
if (data.status) {
fetchError.trigger(data as AnalysisError);
} else {
fetchResult.trigger(data as BangumiRule);
}
});
return {
onResult: fetchResult.on,
onError: fetchError.on,
};
},
/**
* 旧番
* @param bangumiData - Bangumi 数据
*/
async collection(bangumiData: BangumiRule) {
const { data } = await axios.post<Status>(
'api/v1/download/collection',
bangumiData
);
return data.status === 'Success';
},
/**
* 新番
* @param bangumiData - Bangumi 数据
*/
async subscribe(bangumiData: BangumiRule) {
const { data } = await axios.post<Status>(
'api/v1/download/subscribe',
bangumiData
);
return data.status === 'Success';
},
};

11
webui/src/api/log.ts Normal file
View File

@@ -0,0 +1,11 @@
export const apiLog = {
async getLog() {
const { data } = await axios.get<string>('api/v1/log');
return data;
},
async clearLog() {
const { data } = await axios.get<{ status: 'ok' }>('api/v1/log/clear');
return data.status === 'ok';
},
};

47
webui/src/api/program.ts Normal file
View File

@@ -0,0 +1,47 @@
interface Success {
status: 'ok';
}
export const apiProgram = {
/**
* 重启
*/
async restart() {
const { data } = await axios.get<Success>('api/v1/restart');
return data.status === 'ok';
},
/**
* 启动
*/
async start() {
const { data } = await axios.get<Success>('api/v1/start');
return data.status === 'ok';
},
/**
* 停止
*/
async stop() {
const { data } = await axios.get<Success>('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<Success>('api/v1/shutdown');
return data.status === 'ok';
},
};