add 插件API
This commit is contained in:
@ -25,4 +25,4 @@ async def sync_douban(
|
||||
同步豆瓣想看
|
||||
"""
|
||||
background_tasks.add_task(start_douban_chain)
|
||||
return {"success": True}
|
||||
return schemas.Response(success=True, message="任务已启动")
|
||||
|
@ -31,9 +31,9 @@ async def login_access_token(
|
||||
elif not user.is_active:
|
||||
raise HTTPException(status_code=400, detail="用户未启用")
|
||||
access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)
|
||||
return {
|
||||
"access_token": security.create_access_token(
|
||||
return schemas.Token(
|
||||
access_token=security.create_access_token(
|
||||
user.id, expires_delta=access_token_expires
|
||||
),
|
||||
"token_type": "bearer",
|
||||
}
|
||||
token_type="bearer",
|
||||
)
|
||||
|
@ -29,7 +29,7 @@ async def user_message(background_tasks: BackgroundTasks, request: Request):
|
||||
form = await request.form()
|
||||
args = request.query_params
|
||||
background_tasks.add_task(start_message_chain, body, form, args)
|
||||
return {"success": True}
|
||||
return schemas.Response(success=True)
|
||||
|
||||
|
||||
@router.get("/")
|
||||
|
25
app/api/endpoints/plugin.py
Normal file
25
app/api/endpoints/plugin.py
Normal file
@ -0,0 +1,25 @@
|
||||
from typing import Any
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from app import schemas
|
||||
from app.core.plugin import PluginManager
|
||||
from app.db.models.user import User
|
||||
from app.db.userauth import get_current_active_user
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/", response_model=schemas.Response)
|
||||
@router.post("/")
|
||||
async def run_plugin_method(plugin_id: str, method: str,
|
||||
_: User = Depends(get_current_active_user),
|
||||
*args,
|
||||
**kwargs) -> Any:
|
||||
"""
|
||||
运行插件方法
|
||||
"""
|
||||
return PluginManager().run_plugin_method(pid=plugin_id,
|
||||
method=method,
|
||||
*args,
|
||||
**kwargs)
|
@ -68,8 +68,8 @@ async def cookie_cloud_sync(_: User = Depends(get_current_active_user)) -> Any:
|
||||
"""
|
||||
status, error_msg = CookieCloudChain().process()
|
||||
if not status:
|
||||
return {"success": False, "message": error_msg}
|
||||
return {"success": True, "message": error_msg}
|
||||
schemas.Response(success=True, message=error_msg)
|
||||
return schemas.Response(success=True, message="同步成功!")
|
||||
|
||||
|
||||
@router.get("/cookie", response_model=schemas.Response)
|
||||
@ -94,6 +94,6 @@ async def update_cookie(
|
||||
username=username,
|
||||
password=password)
|
||||
if not status:
|
||||
return {"success": False, "message": msg}
|
||||
return schemas.Response(success=False, message=msg)
|
||||
else:
|
||||
return {"success": True, "message": msg}
|
||||
return schemas.Response(success=True, message=msg)
|
||||
|
@ -44,7 +44,7 @@ async def create_subscribe(
|
||||
新增订阅
|
||||
"""
|
||||
result = SubscribeChain().add(**subscribe_in.dict())
|
||||
return {"success": result}
|
||||
return schemas.Response(success=result)
|
||||
|
||||
|
||||
@router.put("/", response_model=schemas.Subscribe)
|
||||
@ -78,7 +78,7 @@ async def delete_subscribe(
|
||||
删除订阅信息
|
||||
"""
|
||||
Subscribe.delete(db, subscribe_in.id)
|
||||
return {"success": True}
|
||||
return schemas.Response(success=True)
|
||||
|
||||
|
||||
@router.post("/seerr", response_model=schemas.Response)
|
||||
@ -100,12 +100,12 @@ async def seerr_subscribe(request: Request, background_tasks: BackgroundTasks,
|
||||
)
|
||||
notification_type = req_json.get("notification_type")
|
||||
if notification_type not in ["MEDIA_APPROVED", "MEDIA_AUTO_APPROVED"]:
|
||||
return {"success": False, "message": "不支持的通知类型"}
|
||||
return schemas.Response(success=False, message="不支持的通知类型")
|
||||
subject = req_json.get("subject")
|
||||
media_type = MediaType.MOVIE if req_json.get("media", {}).get("media_type") == "movie" else MediaType.TV
|
||||
tmdbId = req_json.get("media", {}).get("tmdbId")
|
||||
if not media_type or not tmdbId or not subject:
|
||||
return {"success": False, "message": "请求参数不正确"}
|
||||
return schemas.Response(success=False, message="请求参数不正确")
|
||||
user_name = req_json.get("request", {}).get("requestedBy_username")
|
||||
# 添加订阅
|
||||
if media_type == MediaType.MOVIE:
|
||||
@ -131,7 +131,7 @@ async def seerr_subscribe(request: Request, background_tasks: BackgroundTasks,
|
||||
season=season,
|
||||
username=user_name)
|
||||
|
||||
return {"success": True}
|
||||
return schemas.Response(success=True)
|
||||
|
||||
|
||||
@router.get("/refresh", response_model=schemas.Response)
|
||||
@ -141,7 +141,7 @@ async def refresh_subscribes(
|
||||
刷新所有订阅
|
||||
"""
|
||||
SubscribeChain().refresh()
|
||||
return {"success": True}
|
||||
return schemas.Response(success=True)
|
||||
|
||||
|
||||
@router.get("/search", response_model=schemas.Response)
|
||||
@ -151,4 +151,4 @@ async def search_subscribes(
|
||||
搜索所有订阅
|
||||
"""
|
||||
SubscribeChain().search(state='R')
|
||||
return {"success": True}
|
||||
return schemas.Response(success=True)
|
||||
|
@ -90,7 +90,7 @@ async def delete_user(
|
||||
detail="用户不存在",
|
||||
)
|
||||
user.delete_by_email(db, user_in.email)
|
||||
return {"success": True}
|
||||
return schemas.Response(success=True)
|
||||
|
||||
|
||||
@router.get("/{user_id}", response_model=schemas.User)
|
||||
|
@ -23,9 +23,9 @@ async def webhook_message(background_tasks: BackgroundTasks,
|
||||
Webhook响应
|
||||
"""
|
||||
if token != settings.API_TOKEN:
|
||||
return {"success": False, "message": "token认证不通过"}
|
||||
return schemas.Response(success=False, message="token认证不通过")
|
||||
body = await request.body()
|
||||
form = await request.form()
|
||||
args = request.query_params
|
||||
background_tasks.add_task(start_webhook_chain, body, form, args)
|
||||
return {"success": True}
|
||||
return schemas.Response(success=True)
|
||||
|
Reference in New Issue
Block a user