diff --git a/backend/src/module/api/program.py b/backend/src/module/api/program.py index a118408b..691bd149 100644 --- a/backend/src/module/api/program.py +++ b/backend/src/module/api/program.py @@ -5,6 +5,8 @@ import signal from fastapi import APIRouter, Depends, HTTPException from fastapi.responses import JSONResponse +from .response import u_response + from module.core import Program from module.models import APIResponse from module.conf import VERSION @@ -28,11 +30,8 @@ async def shutdown(): @router.get("/restart", response_model=APIResponse, dependencies=[Depends(get_current_user)]) async def restart(): try: - program.restart() - return JSONResponse( - status_code=200, - content={"msg_en": "Restart program successfully.", "msg_zh": "重启程序成功。"}, - ) + resp = program.restart() + return u_response(resp) except Exception as e: logger.debug(e) logger.warning("Failed to restart program") @@ -45,12 +44,11 @@ async def restart(): ) -@router.get("/start", response_model=APIResponse) -async def start(current_user=Depends(get_current_user)): - if not current_user: - raise UNAUTHORIZED +@router.get("/start", response_model=APIResponse, dependencies=[Depends(get_current_user)]) +async def start(): try: - return program.start() + resp = program.start() + return u_response(resp) except Exception as e: logger.debug(e) logger.warning("Failed to start program") @@ -63,17 +61,13 @@ async def start(current_user=Depends(get_current_user)): ) -@router.get("/stop") -async def stop(current_user=Depends(get_current_user)): - if not current_user: - raise UNAUTHORIZED - return program.stop() +@router.get("/stop", response_model=APIResponse, dependencies=[Depends(get_current_user)]) +async def stop(): + return u_response(program.stop()) -@router.get("/status") -async def program_status(current_user=Depends(get_current_user)): - if not current_user: - raise UNAUTHORIZED +@router.get("/status", response_model=dict, dependencies=[Depends(get_current_user)]) +async def program_status(): if not program.is_running: return { "status": False, @@ -88,10 +82,8 @@ async def program_status(current_user=Depends(get_current_user)): } -@router.get("/shutdown") -async def shutdown_program(current_user=Depends(get_current_user)): - if not current_user: - raise UNAUTHORIZED +@router.get("/shutdown", response_model=APIResponse, dependencies=[Depends(get_current_user)]) +async def shutdown_program(): program.stop() logger.info("Shutting down program...") os.kill(os.getpid(), signal.SIGINT) @@ -102,8 +94,6 @@ async def shutdown_program(current_user=Depends(get_current_user)): # Check status -@router.get("/check/downloader", tags=["check"], response_model=bool) -async def check_downloader_status(current_user=Depends(get_current_user)): - if not current_user: - raise UNAUTHORIZED +@router.get("/check/downloader", tags=["check"], response_model=bool, dependencies=[Depends(get_current_user)]) +async def check_downloader_status(): return program.check_downloader() diff --git a/backend/src/module/core/program.py b/backend/src/module/core/program.py index 6785e2fb..fa7ee3ec 100644 --- a/backend/src/module/core/program.py +++ b/backend/src/module/core/program.py @@ -2,6 +2,7 @@ import logging from module.conf import VERSION, settings from module.update import data_migration, from_30_to_31, start_up, first_run +from module.models import ResponseModel from .sub_thread import RenameThread, RSSThread @@ -56,24 +57,50 @@ class Program(RenameThread, RSSThread): if self.enable_rss: self.rss_start() logger.info("Program running.") - return {"status": "Program started."} + return ResponseModel( + status=True, + status_code=200, + msg_en="Program started.", + msg_zh="程序启动成功。", + ) else: self.stop_event.set() - return {"status": "Can't connect to downloader. Program not paused."} + logger.warning("Program failed to start.") + return ResponseModel( + status=False, + status_code=406, + msg_en="Program failed to start.", + msg_zh="程序启动失败。", + ) def stop(self): if self.is_running: self.stop_event.set() self.rename_stop() self.rss_stop() - return {"status": "Program stopped."} + return ResponseModel( + status=True, + status_code=200, + msg_en="Program stopped.", + msg_zh="程序停止成功。", + ) else: - return {"status": "Program is not running."} + return ResponseModel( + status=False, + status_code=406, + msg_en="Program is not running.", + msg_zh="程序未运行。", + ) def restart(self): self.stop() self.start() - return {"status": "Program restarted."} + return ResponseModel( + status=True, + status_code=200, + msg_en="Program restarted.", + msg_zh="程序重启成功。", + ) def update_database(self): if not self.version_update: diff --git a/webui/src/components/ab-bangumi-card.vue b/webui/src/components/ab-bangumi-card.vue index 418c794f..1aec3bd8 100644 --- a/webui/src/components/ab-bangumi-card.vue +++ b/webui/src/components/ab-bangumi-card.vue @@ -67,7 +67,14 @@ defineEmits(['click']); /> -