Return skipped status for Telegram poll limits
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 30s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 30s
This commit is contained in:
@@ -72,15 +72,16 @@ async def _require_channel_scope(
|
|||||||
raise HTTPException(status_code=404)
|
raise HTTPException(status_code=404)
|
||||||
|
|
||||||
|
|
||||||
def _poll_http_error(exc: PollError) -> HTTPException:
|
def _poll_skipped_result(exc: PollError) -> dict[str, Any]:
|
||||||
headers = None
|
result: dict[str, Any] = {
|
||||||
|
"inserted": 0,
|
||||||
|
"status": "skipped",
|
||||||
|
"code": exc.code,
|
||||||
|
"message": exc.message,
|
||||||
|
}
|
||||||
if exc.retry_after is not None:
|
if exc.retry_after is not None:
|
||||||
headers = {"Retry-After": str(exc.retry_after)}
|
result["retry_after"] = exc.retry_after
|
||||||
return HTTPException(
|
return result
|
||||||
status_code=exc.status_code,
|
|
||||||
detail={"code": exc.code, "message": exc.message},
|
|
||||||
headers=headers,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/auth/status", response_model=AuthStatus, dependencies=[Depends(require_telegram_auth_manager)])
|
@router.get("/auth/status", response_model=AuthStatus, dependencies=[Depends(require_telegram_auth_manager)])
|
||||||
@@ -137,13 +138,13 @@ async def trigger_poll(
|
|||||||
vertical: str | None = Query(None),
|
vertical: str | None = Query(None),
|
||||||
section: str | None = Query(None),
|
section: str | None = Query(None),
|
||||||
session: AsyncSession = Depends(get_session),
|
session: AsyncSession = Depends(get_session),
|
||||||
) -> dict[str, int]:
|
) -> dict[str, Any]:
|
||||||
await _require_channel_scope(session, request, channel_id, vertical, section)
|
await _require_channel_scope(session, request, channel_id, vertical, section)
|
||||||
try:
|
try:
|
||||||
inserted = await poll_channel(channel_id)
|
inserted = await poll_channel(channel_id)
|
||||||
except PollError as exc:
|
except PollError as exc:
|
||||||
raise _poll_http_error(exc)
|
return _poll_skipped_result(exc)
|
||||||
return {"inserted": inserted}
|
return {"inserted": inserted, "status": "ok"}
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
|
|||||||
Reference in New Issue
Block a user