mirror of
https://github.com/TheSmallHanCat/sora2api.git
synced 2026-03-18 19:17:28 +08:00
feat: 新增图片上传专用代理,完善轮询与POW调用链路,重构POW与token传递
This commit is contained in:
@@ -129,8 +129,10 @@ class UpdateAdminConfigRequest(BaseModel):
|
||||
auto_disable_on_401: Optional[bool] = None
|
||||
|
||||
class UpdateProxyConfigRequest(BaseModel):
|
||||
proxy_enabled: bool
|
||||
proxy_enabled: Optional[bool] = None
|
||||
proxy_url: Optional[str] = None
|
||||
image_upload_proxy_enabled: Optional[bool] = None
|
||||
image_upload_proxy_url: Optional[str] = None
|
||||
|
||||
class TestProxyRequest(BaseModel):
|
||||
test_url: Optional[str] = "https://sora.chatgpt.com"
|
||||
@@ -166,6 +168,7 @@ class UpdateWatermarkFreeConfigRequest(BaseModel):
|
||||
class UpdateCallLogicConfigRequest(BaseModel):
|
||||
call_mode: Optional[str] = None # "default" or "polling"
|
||||
polling_mode_enabled: Optional[bool] = None # Legacy support
|
||||
poll_interval: Optional[float] = None # Progress polling interval (seconds)
|
||||
|
||||
class UpdatePowProxyConfigRequest(BaseModel):
|
||||
pow_proxy_enabled: bool
|
||||
@@ -943,7 +946,9 @@ async def get_proxy_config(token: str = Depends(verify_admin_token)) -> dict:
|
||||
config = await proxy_manager.get_proxy_config()
|
||||
return {
|
||||
"proxy_enabled": config.proxy_enabled,
|
||||
"proxy_url": config.proxy_url
|
||||
"proxy_url": config.proxy_url,
|
||||
"image_upload_proxy_enabled": config.image_upload_proxy_enabled,
|
||||
"image_upload_proxy_url": config.image_upload_proxy_url
|
||||
}
|
||||
|
||||
@router.post("/api/proxy/config")
|
||||
@@ -953,7 +958,26 @@ async def update_proxy_config(
|
||||
):
|
||||
"""Update proxy configuration"""
|
||||
try:
|
||||
await proxy_manager.update_proxy_config(request.proxy_enabled, request.proxy_url)
|
||||
current_config = await proxy_manager.get_proxy_config()
|
||||
proxy_enabled = current_config.proxy_enabled if request.proxy_enabled is None else request.proxy_enabled
|
||||
proxy_url = current_config.proxy_url if request.proxy_url is None else request.proxy_url
|
||||
image_upload_proxy_enabled = (
|
||||
current_config.image_upload_proxy_enabled
|
||||
if request.image_upload_proxy_enabled is None
|
||||
else request.image_upload_proxy_enabled
|
||||
)
|
||||
image_upload_proxy_url = (
|
||||
current_config.image_upload_proxy_url
|
||||
if request.image_upload_proxy_url is None
|
||||
else request.image_upload_proxy_url
|
||||
)
|
||||
|
||||
await proxy_manager.update_proxy_config(
|
||||
proxy_enabled,
|
||||
proxy_url,
|
||||
image_upload_proxy_enabled,
|
||||
image_upload_proxy_url
|
||||
)
|
||||
return {"success": True, "message": "Proxy configuration updated"}
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
@@ -1350,11 +1374,19 @@ async def get_call_logic_config(token: str = Depends(verify_admin_token)) -> dic
|
||||
call_mode = getattr(config_obj, "call_mode", None)
|
||||
if call_mode not in ("default", "polling"):
|
||||
call_mode = "polling" if config_obj.polling_mode_enabled else "default"
|
||||
poll_interval = getattr(config_obj, "poll_interval", 2.5)
|
||||
try:
|
||||
poll_interval = float(poll_interval)
|
||||
except (TypeError, ValueError):
|
||||
poll_interval = 2.5
|
||||
if poll_interval <= 0:
|
||||
poll_interval = 2.5
|
||||
return {
|
||||
"success": True,
|
||||
"config": {
|
||||
"call_mode": call_mode,
|
||||
"polling_mode_enabled": call_mode == "polling"
|
||||
"polling_mode_enabled": call_mode == "polling",
|
||||
"poll_interval": poll_interval
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1371,13 +1403,26 @@ async def update_call_logic_config(
|
||||
if call_mode is None:
|
||||
raise HTTPException(status_code=400, detail="Invalid call_mode")
|
||||
|
||||
await db.update_call_logic_config(call_mode)
|
||||
poll_interval = request.poll_interval
|
||||
if poll_interval is not None:
|
||||
try:
|
||||
poll_interval = float(poll_interval)
|
||||
except (TypeError, ValueError):
|
||||
raise HTTPException(status_code=400, detail="poll_interval must be a valid number")
|
||||
if poll_interval <= 0:
|
||||
raise HTTPException(status_code=400, detail="poll_interval must be greater than 0")
|
||||
|
||||
await db.update_call_logic_config(call_mode, poll_interval)
|
||||
config.set_call_logic_mode(call_mode)
|
||||
if poll_interval is not None:
|
||||
config.set_poll_interval(poll_interval)
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
"message": "Call logic configuration updated",
|
||||
"call_mode": call_mode,
|
||||
"polling_mode_enabled": call_mode == "polling"
|
||||
"polling_mode_enabled": call_mode == "polling",
|
||||
"poll_interval": config.poll_interval
|
||||
}
|
||||
except HTTPException:
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user