Первоначальная версия VidConf

This commit is contained in:
2026-07-23 01:04:01 +03:00
commit 896455381a
335 changed files with 61527 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
"""Выдача LiveKit access-токенов участникам конференции."""
from datetime import timedelta
from livekit import api
from core.config import get_settings
TOKEN_TTL = timedelta(hours=6)
def create_room_access_token(
*, room_name: str, identity: str, name: str, metadata: str | None = None
) -> str:
"""Создать JWT access-токен LiveKit для входа участника в комнату.
`identity` — произвольная строка identity, используемая webhook-
обработчиками (`services.webhook_handlers`) для сопоставления треков с
участником: `str(user_id)` для зарегистрированного пользователя,
`guest:{guest_access.id}` для гостя (ADR-001, п.6). `name` — отображаемое
имя, показывается клиентским UI. `metadata` — произвольная строка
(JSON), доступная клиенту как `participant.metadata` — используется
для аватара при выключенной камере; `None` (гость либо пользователь
без аватара) — метаданные не выставляются вовсе.
"""
settings = get_settings()
token = (
api.AccessToken(settings.livekit_api_key, settings.livekit_api_secret)
.with_identity(identity)
.with_name(name)
.with_grants(
api.VideoGrants(
room_join=True,
room=room_name,
can_publish=True,
can_subscribe=True,
)
)
.with_ttl(TOKEN_TTL)
)
if metadata is not None:
token = token.with_metadata(metadata)
return token.to_jwt()