From daa2b7a8cd868cd6b9d909752431ebffed63fb23 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Fri, 10 Nov 2023 21:40:24 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E9=83=A8=E5=88=86API=E6=94=AF=E6=8C=81a?= =?UTF-8?q?pi=20token=E8=AE=BF=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/dashboard.py | 50 +++++++++++++++++++++++++++++++++- app/api/endpoints/media.py | 23 +++++++++++++++- app/api/endpoints/subscribe.py | 12 ++++++-- app/core/security.py | 6 ++-- 4 files changed, 83 insertions(+), 8 deletions(-) diff --git a/app/api/endpoints/dashboard.py b/app/api/endpoints/dashboard.py index 35fb922f..ce437d37 100644 --- a/app/api/endpoints/dashboard.py +++ b/app/api/endpoints/dashboard.py @@ -6,7 +6,7 @@ from sqlalchemy.orm import Session from app import schemas from app.chain.dashboard import DashboardChain from app.core.config import settings -from app.core.security import verify_token +from app.core.security import verify_token, verify_uri_token from app.db import get_db from app.db.models.transferhistory import TransferHistory from app.scheduler import Scheduler @@ -34,6 +34,14 @@ def statistic(_: schemas.TokenPayload = Depends(verify_token)) -> Any: return schemas.Statistic() +@router.get("/statistic2", summary="媒体数量统计(API_TOKEN)", response_model=schemas.Statistic) +def statistic2(_: str = Depends(verify_uri_token)) -> Any: + """ + 查询媒体数量统计信息 API_TOKEN认证(?token=xxx) + """ + return statistic() + + @router.get("/storage", summary="存储空间", response_model=schemas.Storage) def storage(_: schemas.TokenPayload = Depends(verify_token)) -> Any: """ @@ -46,6 +54,14 @@ def storage(_: schemas.TokenPayload = Depends(verify_token)) -> Any: ) +@router.get("/storage2", summary="存储空间(API_TOKEN)", response_model=schemas.Storage) +def storage2(_: str = Depends(verify_uri_token)) -> Any: + """ + 查询存储空间信息 API_TOKEN认证(?token=xxx) + """ + return storage() + + @router.get("/processes", summary="进程信息", response_model=List[schemas.ProcessInfo]) def processes(_: schemas.TokenPayload = Depends(verify_token)) -> Any: """ @@ -73,6 +89,14 @@ def downloader(_: schemas.TokenPayload = Depends(verify_token)) -> Any: return schemas.DownloaderInfo() +@router.get("/downloader2", summary="下载器信息(API_TOKEN)", response_model=schemas.DownloaderInfo) +def downloader2(_: str = Depends(verify_uri_token)) -> Any: + """ + 查询下载器信息 API_TOKEN认证(?token=xxx) + """ + return downloader() + + @router.get("/schedule", summary="后台服务", response_model=List[schemas.ScheduleInfo]) def schedule(_: schemas.TokenPayload = Depends(verify_token)) -> Any: """ @@ -81,6 +105,14 @@ def schedule(_: schemas.TokenPayload = Depends(verify_token)) -> Any: return Scheduler().list() +@router.get("/schedule2", summary="后台服务(API_TOKEN)", response_model=List[schemas.ScheduleInfo]) +def schedule2(_: str = Depends(verify_uri_token)) -> Any: + """ + 查询下载器信息 API_TOKEN认证(?token=xxx) + """ + return schedule() + + @router.get("/transfer", summary="文件整理统计", response_model=List[int]) def transfer(days: int = 7, db: Session = Depends(get_db), _: schemas.TokenPayload = Depends(verify_token)) -> Any: @@ -99,9 +131,25 @@ def cpu(_: schemas.TokenPayload = Depends(verify_token)) -> Any: return SystemUtils.cpu_usage() +@router.get("/cpu2", summary="获取当前CPU使用率(API_TOKEN)", response_model=int) +def cpu2(_: str = Depends(verify_uri_token)) -> Any: + """ + 获取当前CPU使用率 API_TOKEN认证(?token=xxx) + """ + return cpu() + + @router.get("/memory", summary="获取当前内存使用量和使用率", response_model=List[int]) def memory(_: schemas.TokenPayload = Depends(verify_token)) -> Any: """ 获取当前内存使用率 """ return SystemUtils.memory_usage() + + +@router.get("/memory2", summary="获取当前内存使用量和使用率(API_TOKEN)", response_model=List[int]) +def memory2(_: str = Depends(verify_uri_token)) -> Any: + """ + 获取当前内存使用率 API_TOKEN认证(?token=xxx) + """ + return memory() diff --git a/app/api/endpoints/media.py b/app/api/endpoints/media.py index 4776a533..682a485e 100644 --- a/app/api/endpoints/media.py +++ b/app/api/endpoints/media.py @@ -7,7 +7,7 @@ from app import schemas from app.chain.media import MediaChain from app.core.config import settings from app.core.metainfo import MetaInfo -from app.core.security import verify_token +from app.core.security import verify_token, verify_uri_token from app.db import get_db from app.db.mediaserver_oper import MediaServerOper from app.schemas import MediaType @@ -29,6 +29,17 @@ def recognize(title: str, return schemas.Context() +@router.get("/recognize2", summary="识别种子媒体信息(API_TOKEN)", response_model=schemas.Context) +def recognize2(title: str, + subtitle: str = None, + _: str = Depends(verify_uri_token)) -> Any: + """ + 根据标题、副标题识别媒体信息 API_TOKEN认证(?token=xxx) + """ + # 识别媒体信息 + return recognize(title, subtitle) + + @router.get("/recognize_file", summary="识别媒体信息(文件)", response_model=schemas.Context) def recognize(path: str, _: schemas.TokenPayload = Depends(verify_token)) -> Any: @@ -42,6 +53,16 @@ def recognize(path: str, return schemas.Context() +@router.get("/recognize_file2", summary="识别文件媒体信息(API_TOKEN)", response_model=schemas.Context) +def recognize2(path: str, + _: str = Depends(verify_uri_token)) -> Any: + """ + 根据文件路径识别媒体信息 API_TOKEN认证(?token=xxx) + """ + # 识别媒体信息 + return recognize(path) + + @router.get("/search", summary="搜索媒体信息", response_model=List[schemas.MediaInfo]) def search_by_title(title: str, page: int = 1, diff --git a/app/api/endpoints/subscribe.py b/app/api/endpoints/subscribe.py index 78f4889f..985ae72b 100644 --- a/app/api/endpoints/subscribe.py +++ b/app/api/endpoints/subscribe.py @@ -8,7 +8,7 @@ from app import schemas from app.chain.subscribe import SubscribeChain from app.core.config import settings from app.core.metainfo import MetaInfo -from app.core.security import verify_token +from app.core.security import verify_token, verify_uri_token from app.db import get_db from app.db.models.subscribe import Subscribe from app.db.models.user import User @@ -28,7 +28,7 @@ def start_subscribe_add(title: str, year: str, mtype=mtype, tmdbid=tmdbid, season=season, username=username) -@router.get("/", summary="所有订阅", response_model=List[schemas.Subscribe]) +@router.get("/", summary="查询所有订阅", response_model=List[schemas.Subscribe]) def read_subscribes( db: Session = Depends(get_db), _: schemas.TokenPayload = Depends(verify_token)) -> Any: @@ -42,6 +42,14 @@ def read_subscribes( return subscribes +@router.get("/list", summary="查询所有订阅(API_TOKEN)", response_model=List[schemas.Subscribe]) +def list_subscribes(_: str = Depends(verify_uri_token)) -> Any: + """ + 查询所有订阅 API_TOKEN认证(?token=xxx) + """ + return read_subscribes() + + @router.post("/", summary="新增订阅", response_model=schemas.Response) def create_subscribe( *, diff --git a/app/core/security.py b/app/core/security.py index 3bb25d79..72dcf712 100644 --- a/app/core/security.py +++ b/app/core/security.py @@ -59,8 +59,7 @@ def get_token(token: str = None) -> str: if token is None: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, - detail="token请求参数缺失", - headers={"WWW-Authenticate": "Bearer"}, + detail="token请求参数缺失" ) return token @@ -72,8 +71,7 @@ def verify_uri_token(token: str = Depends(get_token)) -> str: if token != settings.API_TOKEN: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, - detail="token校验不通过", - headers={"WWW-Authenticate": "Bearer"}, + detail="token校验不通过" ) return token