add 插件API

This commit is contained in:
jxxghp
2023-06-18 10:22:14 +08:00
parent c0ea8097f8
commit 5dd7878e1b
17 changed files with 146 additions and 83 deletions

View File

@ -25,4 +25,4 @@ async def sync_douban(
同步豆瓣想看
"""
background_tasks.add_task(start_douban_chain)
return {"success": True}
return schemas.Response(success=True, message="任务已启动")

View File

@ -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",
)

View File

@ -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("/")

View 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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)