fix seerr api

This commit is contained in:
jxxghp 2023-11-11 12:16:45 +08:00
parent 9439d02351
commit 07bd5f1926
2 changed files with 35 additions and 21 deletions

View File

@ -8,7 +8,7 @@ from app.chain.media import MediaChain
from app.chain.subscribe import SubscribeChain from app.chain.subscribe import SubscribeChain
from app.core.config import settings from app.core.config import settings
from app.core.metainfo import MetaInfo from app.core.metainfo import MetaInfo
from app.core.security import verify_uri_token from app.core.security import verify_uri_apikey
from app.db import get_db from app.db import get_db
from app.db.models.subscribe import Subscribe from app.db.models.subscribe import Subscribe
from app.schemas import RadarrMovie, SonarrSeries from app.schemas import RadarrMovie, SonarrSeries
@ -19,7 +19,7 @@ arr_router = APIRouter(tags=['servarr'])
@arr_router.get("/system/status", summary="系统状态") @arr_router.get("/system/status", summary="系统状态")
def arr_system_status(_: str = Depends(verify_uri_token)) -> Any: def arr_system_status(_: str = Depends(verify_uri_apikey)) -> Any:
""" """
模拟RadarrSonarr系统状态 模拟RadarrSonarr系统状态
""" """
@ -73,7 +73,7 @@ def arr_system_status(_: str = Depends(verify_uri_token)) -> Any:
@arr_router.get("/qualityProfile", summary="质量配置") @arr_router.get("/qualityProfile", summary="质量配置")
def arr_qualityProfile(_: str = Depends(verify_uri_token)) -> Any: def arr_qualityProfile(_: str = Depends(verify_uri_apikey)) -> Any:
""" """
模拟RadarrSonarr质量配置 模拟RadarrSonarr质量配置
""" """
@ -114,7 +114,7 @@ def arr_qualityProfile(_: str = Depends(verify_uri_token)) -> Any:
@arr_router.get("/rootfolder", summary="根目录") @arr_router.get("/rootfolder", summary="根目录")
def arr_rootfolder(_: str = Depends(verify_uri_token)) -> Any: def arr_rootfolder(_: str = Depends(verify_uri_apikey)) -> Any:
""" """
模拟RadarrSonarr根目录 模拟RadarrSonarr根目录
""" """
@ -130,7 +130,7 @@ def arr_rootfolder(_: str = Depends(verify_uri_token)) -> Any:
@arr_router.get("/tag", summary="标签") @arr_router.get("/tag", summary="标签")
def arr_tag(_: str = Depends(verify_uri_token)) -> Any: def arr_tag(_: str = Depends(verify_uri_apikey)) -> Any:
""" """
模拟RadarrSonarr标签 模拟RadarrSonarr标签
""" """
@ -143,7 +143,7 @@ def arr_tag(_: str = Depends(verify_uri_token)) -> Any:
@arr_router.get("/languageprofile", summary="语言") @arr_router.get("/languageprofile", summary="语言")
def arr_languageprofile(_: str = Depends(verify_uri_token)) -> Any: def arr_languageprofile(_: str = Depends(verify_uri_apikey)) -> Any:
""" """
模拟RadarrSonarr语言 模拟RadarrSonarr语言
""" """
@ -169,7 +169,7 @@ def arr_languageprofile(_: str = Depends(verify_uri_token)) -> Any:
@arr_router.get("/movie", summary="所有订阅电影", response_model=List[schemas.RadarrMovie]) @arr_router.get("/movie", summary="所有订阅电影", response_model=List[schemas.RadarrMovie])
def arr_movies(_: str = Depends(verify_uri_token), db: Session = Depends(get_db)) -> Any: def arr_movies(_: str = Depends(verify_uri_apikey), db: Session = Depends(get_db)) -> Any:
""" """
查询Rardar电影 查询Rardar电影
""" """
@ -260,7 +260,7 @@ def arr_movies(_: str = Depends(verify_uri_token), db: Session = Depends(get_db)
@arr_router.get("/movie/lookup", summary="查询电影", response_model=List[schemas.RadarrMovie]) @arr_router.get("/movie/lookup", summary="查询电影", response_model=List[schemas.RadarrMovie])
def arr_movie_lookup(term: str, db: Session = Depends(get_db), _: str = Depends(verify_uri_token)) -> Any: def arr_movie_lookup(term: str, db: Session = Depends(get_db), _: str = Depends(verify_uri_apikey)) -> Any:
""" """
查询Rardar电影 term: `tmdb:${id}` 查询Rardar电影 term: `tmdb:${id}`
存在和不存在均不能返回错误 存在和不存在均不能返回错误
@ -306,7 +306,7 @@ def arr_movie_lookup(term: str, db: Session = Depends(get_db), _: str = Depends(
@arr_router.get("/movie/{mid}", summary="电影订阅详情", response_model=schemas.RadarrMovie) @arr_router.get("/movie/{mid}", summary="电影订阅详情", response_model=schemas.RadarrMovie)
def arr_movie(mid: int, db: Session = Depends(get_db), _: str = Depends(verify_uri_token)) -> Any: def arr_movie(mid: int, db: Session = Depends(get_db), _: str = Depends(verify_uri_apikey)) -> Any:
""" """
查询Rardar电影订阅 查询Rardar电影订阅
""" """
@ -334,7 +334,7 @@ def arr_movie(mid: int, db: Session = Depends(get_db), _: str = Depends(verify_u
@arr_router.post("/movie", summary="新增电影订阅") @arr_router.post("/movie", summary="新增电影订阅")
def arr_add_movie(movie: RadarrMovie, def arr_add_movie(movie: RadarrMovie,
db: Session = Depends(get_db), db: Session = Depends(get_db),
_: str = Depends(verify_uri_token) _: str = Depends(verify_uri_apikey)
) -> Any: ) -> Any:
""" """
新增Rardar电影订阅 新增Rardar电影订阅
@ -363,7 +363,7 @@ def arr_add_movie(movie: RadarrMovie,
@arr_router.delete("/movie/{mid}", summary="删除电影订阅", response_model=schemas.Response) @arr_router.delete("/movie/{mid}", summary="删除电影订阅", response_model=schemas.Response)
def arr_remove_movie(mid: int, db: Session = Depends(get_db), _: str = Depends(verify_uri_token)) -> Any: def arr_remove_movie(mid: int, db: Session = Depends(get_db), _: str = Depends(verify_uri_apikey)) -> Any:
""" """
删除Rardar电影订阅 删除Rardar电影订阅
""" """
@ -379,7 +379,7 @@ def arr_remove_movie(mid: int, db: Session = Depends(get_db), _: str = Depends(v
@arr_router.get("/series", summary="所有剧集", response_model=List[schemas.SonarrSeries]) @arr_router.get("/series", summary="所有剧集", response_model=List[schemas.SonarrSeries])
def arr_series(_: str = Depends(verify_uri_token), db: Session = Depends(get_db)) -> Any: def arr_series(_: str = Depends(verify_uri_apikey), db: Session = Depends(get_db)) -> Any:
""" """
查询Sonarr剧集 查询Sonarr剧集
""" """
@ -515,7 +515,7 @@ def arr_series(_: str = Depends(verify_uri_token), db: Session = Depends(get_db)
@arr_router.get("/series/lookup", summary="查询剧集") @arr_router.get("/series/lookup", summary="查询剧集")
def arr_series_lookup(term: str, db: Session = Depends(get_db), _: str = Depends(verify_uri_token)) -> Any: def arr_series_lookup(term: str, db: Session = Depends(get_db), _: str = Depends(verify_uri_apikey)) -> Any:
""" """
查询Sonarr剧集 term: `tvdb:${id}` title 查询Sonarr剧集 term: `tvdb:${id}` title
""" """
@ -604,7 +604,7 @@ def arr_series_lookup(term: str, db: Session = Depends(get_db), _: str = Depends
@arr_router.get("/series/{tid}", summary="剧集详情") @arr_router.get("/series/{tid}", summary="剧集详情")
def arr_serie(tid: int, db: Session = Depends(get_db), _: str = Depends(verify_uri_token)) -> Any: def arr_serie(tid: int, db: Session = Depends(get_db), _: str = Depends(verify_uri_apikey)) -> Any:
""" """
查询Sonarr剧集 查询Sonarr剧集
""" """
@ -640,7 +640,7 @@ def arr_serie(tid: int, db: Session = Depends(get_db), _: str = Depends(verify_u
@arr_router.post("/series", summary="新增剧集订阅") @arr_router.post("/series", summary="新增剧集订阅")
def arr_add_series(tv: schemas.SonarrSeries, def arr_add_series(tv: schemas.SonarrSeries,
db: Session = Depends(get_db), db: Session = Depends(get_db),
_: str = Depends(verify_uri_token)) -> Any: _: str = Depends(verify_uri_apikey)) -> Any:
""" """
新增Sonarr剧集订阅 新增Sonarr剧集订阅
""" """
@ -682,7 +682,7 @@ def arr_add_series(tv: schemas.SonarrSeries,
@arr_router.delete("/series/{tid}", summary="删除剧集订阅") @arr_router.delete("/series/{tid}", summary="删除剧集订阅")
def arr_remove_series(tid: int, db: Session = Depends(get_db), _: str = Depends(verify_uri_token)) -> Any: def arr_remove_series(tid: int, db: Session = Depends(get_db), _: str = Depends(verify_uri_apikey)) -> Any:
""" """
删除Sonarr剧集订阅 删除Sonarr剧集订阅
""" """

View File

@ -56,14 +56,16 @@ def get_token(token: str = None) -> str:
""" """
从请求URL中获取token 从请求URL中获取token
""" """
if token is None:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="token请求参数缺失"
)
return token return token
def get_apikey(apikey: str = None) -> str:
"""
从请求URL中获取apikey
"""
return apikey
def verify_uri_token(token: str = Depends(get_token)) -> str: def verify_uri_token(token: str = Depends(get_token)) -> str:
""" """
通过依赖项使用token进行身份认证 通过依赖项使用token进行身份认证
@ -76,6 +78,18 @@ def verify_uri_token(token: str = Depends(get_token)) -> str:
return token return token
def verify_uri_apikey(apikey: str = Depends(get_apikey)) -> str:
"""
通过依赖项使用apikey进行身份认证
"""
if apikey != settings.API_KEY:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="apikey校验不通过"
)
return apikey
def verify_password(plain_password: str, hashed_password: str) -> bool: def verify_password(plain_password: str, hashed_password: str) -> bool:
return pwd_context.verify(plain_password, hashed_password) return pwd_context.verify(plain_password, hashed_password)