mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-06-11 02:31:25 +08:00
feat(site): add POST /site/cookie/{site_id} endpoint for updating site Cookie&UA via request body
- Introduce SiteCookieUpdate schema for structured cookie update requests - Add POST endpoint to update site Cookie&UA using JSON body - Refactor cookie update logic into shared _update_site_cookie function - Update SKILL.md to document new endpoint and endpoint count - Add tests for both POST and legacy GET cookie update endpoints
This commit is contained in:
@@ -26,6 +26,7 @@ from app.db.user_oper import (
|
||||
get_current_active_superuser_async,
|
||||
)
|
||||
from app.helper.sites import SitesHelper # noqa
|
||||
from app.log import logger
|
||||
from app.scheduler import Scheduler
|
||||
from app.schemas.types import SystemConfigKey, EventType
|
||||
from app.utils.string import StringUtils
|
||||
@@ -161,6 +162,61 @@ async def update_sites_priority(
|
||||
return schemas.Response(success=True)
|
||||
|
||||
|
||||
def _update_site_cookie(
|
||||
site_id: int,
|
||||
username: str,
|
||||
password: str,
|
||||
code: Optional[str],
|
||||
db: Session,
|
||||
) -> schemas.Response:
|
||||
"""
|
||||
执行站点 Cookie 与 UA 更新。
|
||||
|
||||
:param site_id: 站点编号
|
||||
:param username: 站点登录用户名
|
||||
:param password: 站点登录密码
|
||||
:param code: 二步验证码或密钥
|
||||
:param db: 数据库会话
|
||||
:return: 更新结果
|
||||
"""
|
||||
site_info = Site.get(db, site_id)
|
||||
if not site_info:
|
||||
raise HTTPException(
|
||||
status_code=404,
|
||||
detail=f"站点 {site_id} 不存在!",
|
||||
)
|
||||
logger.info(f"开始更新站点【{site_info.name}】Cookie&UA")
|
||||
state, message = SiteChain().update_cookie(
|
||||
site_info=site_info, username=username, password=password, two_step_code=code
|
||||
)
|
||||
if state:
|
||||
logger.info(f"站点【{site_info.name}】Cookie&UA更新成功")
|
||||
else:
|
||||
logger.error(f"站点【{site_info.name}】Cookie&UA更新失败:{message}")
|
||||
return schemas.Response(success=state, message=message)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/cookie/{site_id}", summary="更新站点Cookie&UA", response_model=schemas.Response
|
||||
)
|
||||
def update_cookie_by_body(
|
||||
site_id: int,
|
||||
site_cookie_update: schemas.SiteCookieUpdate,
|
||||
db: Session = Depends(get_db),
|
||||
_: User = Depends(get_current_active_superuser),
|
||||
) -> Any:
|
||||
"""
|
||||
使用请求体中的用户密码更新站点Cookie
|
||||
"""
|
||||
return _update_site_cookie(
|
||||
site_id=site_id,
|
||||
username=site_cookie_update.username,
|
||||
password=site_cookie_update.password,
|
||||
code=site_cookie_update.code,
|
||||
db=db,
|
||||
)
|
||||
|
||||
|
||||
@router.get(
|
||||
"/cookie/{site_id}", summary="更新站点Cookie&UA", response_model=schemas.Response
|
||||
)
|
||||
@@ -175,18 +231,13 @@ def update_cookie(
|
||||
"""
|
||||
使用用户密码更新站点Cookie
|
||||
"""
|
||||
# 查询站点
|
||||
site_info = Site.get(db, site_id)
|
||||
if not site_info:
|
||||
raise HTTPException(
|
||||
status_code=404,
|
||||
detail=f"站点 {site_id} 不存在!",
|
||||
)
|
||||
# 更新Cookie
|
||||
state, message = SiteChain().update_cookie(
|
||||
site_info=site_info, username=username, password=password, two_step_code=code
|
||||
return _update_site_cookie(
|
||||
site_id=site_id,
|
||||
username=username,
|
||||
password=password,
|
||||
code=code,
|
||||
db=db,
|
||||
)
|
||||
return schemas.Response(success=state, message=message)
|
||||
|
||||
|
||||
@router.post(
|
||||
|
||||
Reference in New Issue
Block a user