From 710d7964ee5c59757ff729fa701fd6cfbf19de89 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Tue, 18 Feb 2025 17:44:14 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F(backend)=20extract=20LiveKit?= =?UTF-8?q?=20connection=20info=20generation=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extract serialization logic for LiveKit server connection data to make it reusable across endpoints. Function naming will be improved in future refactoring when utility functions are moved to a proper service. --- src/backend/core/api/serializers.py | 14 ++++---------- src/backend/core/utils.py | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/backend/core/api/serializers.py b/src/backend/core/api/serializers.py index 252f8556..82d04cbe 100644 --- a/src/backend/core/api/serializers.py +++ b/src/backend/core/api/serializers.py @@ -1,6 +1,5 @@ """Client serializers for the Meet core app.""" -from django.conf import settings from django.utils.translation import gettext_lazy as _ from rest_framework import serializers @@ -130,16 +129,11 @@ class RoomSerializer(serializers.ModelSerializer): del output["configuration"] if role is not None or instance.access_level == models.RoomAccessLevel.PUBLIC: - slug = f"{instance.id!s}" + room_id = f"{instance.id!s}" username = request.query_params.get("username", None) - - output["livekit"] = { - "url": settings.LIVEKIT_CONFIGURATION["url"], - "room": slug, - "token": utils.generate_token( - room=slug, user=request.user, username=username - ), - } + output["livekit"] = utils.generate_livekit_config( + room_id=room_id, user=request.user, username=username + ) output["is_administrable"] = is_admin diff --git a/src/backend/core/utils.py b/src/backend/core/utils.py index 304b5de7..55eab530 100644 --- a/src/backend/core/utils.py +++ b/src/backend/core/utils.py @@ -81,3 +81,21 @@ def generate_token(room: str, user, username: Optional[str] = None) -> str: ) return token.to_jwt() + + +def generate_livekit_config(room_id: str, user, username: str) -> dict: + """Generate LiveKit configuration for room access. + + Args: + room_id: Room identifier + user: User instance requesting access + username: Display name in room + + Returns: + dict: LiveKit configuration with URL, room and access token + """ + return { + "url": settings.LIVEKIT_CONFIGURATION["url"], + "room": room_id, + "token": generate_token(room=room_id, user=user, username=username), + }