fix: program api problem

This commit is contained in:
estrella
2023-09-18 19:48:19 +08:00
parent ee5a6669e7
commit 9fcbb6cc7f
4 changed files with 69 additions and 33 deletions

View File

@@ -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()

View File

@@ -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:

View File

@@ -67,7 +67,14 @@ defineEmits(['click']);
/>
</div>
</div>
<div v-else-if="type === 'search'" w-480px rounded-12px p-4px shadow class="card-border">
<div
v-else-if="type === 'search'"
w-480px rounded-12px p-4px
shadow
transition-opacity
ease-in-out
duration-300
class="card-border">
<div
bg-white rounded-8px p-12px
fx-cer justify-between
@@ -123,4 +130,15 @@ defineEmits(['click']);
.search-image {
transform: translateY(-25%);
}
.bangumi-enter-active,
.bangumi-leave-active {
transition: all 0.3s ease;
}
.bangumi-enter-from,
.bangumi-leave-to {
opacity: 0;
transform: translateY(20px);
}
</style>

View File

@@ -4,6 +4,7 @@ import {vOnClickOutside} from "@vueuse/components";
defineEmits(['add-bangumi']);
const showProvider = ref(false);
const hasUpdate = ref(false);
const {
providers,
getProviders,