first
This commit is contained in:
93
domain-api/app/api/routes/juming.py
Normal file
93
domain-api/app/api/routes/juming.py
Normal file
@@ -0,0 +1,93 @@
|
||||
from fastapi import APIRouter, File, HTTPException, UploadFile
|
||||
|
||||
from app.schemas.common import ApiResponse
|
||||
from app.services.juming_service import (
|
||||
get_juming_preferences,
|
||||
get_juming_status,
|
||||
login_jucha_with_juming_cookie,
|
||||
login_juming,
|
||||
update_juming_preferences,
|
||||
upload_juming_cookie,
|
||||
)
|
||||
from app.services.juming_task_service import create_juming_task, list_juming_tasks, request_stop_juming_task, retry_juming_task
|
||||
|
||||
router = APIRouter(tags=["juming"])
|
||||
|
||||
|
||||
@router.get("/juming/status", response_model=ApiResponse)
|
||||
def juming_status() -> ApiResponse:
|
||||
return ApiResponse(data=get_juming_status())
|
||||
|
||||
|
||||
@router.get("/juming/preferences", response_model=ApiResponse)
|
||||
def juming_preferences() -> ApiResponse:
|
||||
return ApiResponse(data=get_juming_preferences())
|
||||
|
||||
|
||||
@router.put("/juming/preferences", response_model=ApiResponse)
|
||||
def update_juming_preferences_route(payload: dict) -> ApiResponse:
|
||||
try:
|
||||
data = update_juming_preferences(payload)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
return ApiResponse(message="聚名采集偏好已保存", data=data)
|
||||
|
||||
|
||||
@router.post("/juming/crawl", response_model=ApiResponse)
|
||||
def juming_crawl(payload: dict) -> ApiResponse:
|
||||
try:
|
||||
data = create_juming_task(payload)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
return ApiResponse(message="聚名采集任务已创建", data=data)
|
||||
|
||||
|
||||
@router.get("/juming/tasks", response_model=ApiResponse)
|
||||
def juming_tasks() -> ApiResponse:
|
||||
return ApiResponse(data=list_juming_tasks())
|
||||
|
||||
|
||||
@router.post("/juming/tasks/{task_id}/retry", response_model=ApiResponse)
|
||||
def juming_task_retry(task_id: str) -> ApiResponse:
|
||||
try:
|
||||
data = retry_juming_task(task_id)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
return ApiResponse(message="聚名采集任务已重新加入队列", data=data)
|
||||
|
||||
|
||||
@router.post("/juming/tasks/{task_id}/stop", response_model=ApiResponse)
|
||||
def juming_task_stop(task_id: str) -> ApiResponse:
|
||||
try:
|
||||
data = request_stop_juming_task(task_id)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
return ApiResponse(message="聚名采集任务已发送停止请求", data=data)
|
||||
|
||||
|
||||
@router.post("/juming/login", response_model=ApiResponse)
|
||||
def juming_login(payload: dict) -> ApiResponse:
|
||||
try:
|
||||
data = login_juming(str(payload.get("email") or ""), str(payload.get("password") or ""))
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
return ApiResponse(message="聚名登录成功", data=data)
|
||||
|
||||
|
||||
@router.post("/juming/jucha-login", response_model=ApiResponse)
|
||||
def juming_jucha_login() -> ApiResponse:
|
||||
try:
|
||||
data = login_jucha_with_juming_cookie()
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
return ApiResponse(message="聚查联名登录成功", data=data)
|
||||
|
||||
|
||||
@router.post("/juming/cookie/upload", response_model=ApiResponse)
|
||||
async def juming_cookie_upload(file: UploadFile = File(...)) -> ApiResponse:
|
||||
content = await file.read()
|
||||
try:
|
||||
data = upload_juming_cookie(file.filename or "juming_cookies.pkl", content)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
return ApiResponse(message="聚名 Cookie 已上传", data=data)
|
||||
Reference in New Issue
Block a user