diff --git a/app/api/endpoints/site.py b/app/api/endpoints/site.py index 8668190a..3c3bf1b7 100644 --- a/app/api/endpoints/site.py +++ b/app/api/endpoints/site.py @@ -331,6 +331,29 @@ def read_rss_sites(db: Session = Depends(get_db), return rss_sites +@router.get("/auth", summary="查询认证站点", response_model=dict) +def read_auth_sites(_: schemas.TokenPayload = Depends(verify_token)) -> dict: + """ + 获取可认证站点列表 + """ + return SitesHelper().get_authsites() + + +@router.post("/auth", summary="用户站点认证", response_model=schemas.Response) +def auth_site( + auth_info: schemas.SiteAuth, + _: User = Depends(get_current_active_superuser) +) -> Any: + """ + 用户站点认证 + """ + if not auth_info or not auth_info.site or not auth_info.params: + return schemas.Response(success=False, message="请输入认证站点和认证参数") + status, msg = SitesHelper().check_user(auth_info.site, auth_info.params) + SystemConfigOper().set(SystemConfigKey.UserSiteAuthParams, auth_info.dict()) + return schemas.Response(success=status, message=msg) + + @router.get("/{site_id}", summary="站点详情", response_model=schemas.Site) def read_site( site_id: int, diff --git a/app/schemas/site.py b/app/schemas/site.py index 42157d1a..a57c8040 100644 --- a/app/schemas/site.py +++ b/app/schemas/site.py @@ -1,4 +1,4 @@ -from typing import Optional, Any, Union +from typing import Optional, Any, Union, Dict from pydantic import BaseModel @@ -110,3 +110,8 @@ class SiteUserData(BaseModel): updated_day: Optional[str] = None # 更新时间 updated_time: Optional[str] = None + + +class SiteAuth(BaseModel): + site: Optional[str] = None + params: Optional[Dict[str, Union[int, str]]] = {} diff --git a/app/schemas/types.py b/app/schemas/types.py index 0875eed7..6292c043 100644 --- a/app/schemas/types.py +++ b/app/schemas/types.py @@ -122,6 +122,8 @@ class SystemConfigKey(Enum): DefaultMovieSubscribeConfig = "DefaultMovieSubscribeConfig" # 默认电视剧订阅规则 DefaultTvSubscribeConfig = "DefaultTvSubscribeConfig" + # 用户站点认证参数 + UserSiteAuthParams = "UserSiteAuthParams" # 处理进度Key字典