Skip to content

Commit 23259e9

Browse files
committed
add room type query param
1 parent 7f2fba0 commit 23259e9

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

examples/room_manager/room_service.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import betterproto
77

88
from fishjam import FishjamClient, PeerOptions, Room, RoomOptions
9+
from fishjam._openapi_client.models import RoomConfigRoomType
910
from fishjam.events import ServerMessagePeerCrashed as PeerCrashed
1011
from fishjam.events import ServerMessagePeerDeleted as PeerDeleted
1112
from fishjam.events import ServerMessageRoomCrashed as RoomCrashed
@@ -38,8 +39,15 @@ def __init__(self, args: Namespace, logger: Logger):
3839
self.logger = logger
3940
self.config = args
4041

41-
def get_peer_access(self, room_name: str, username: str) -> PeerAccess:
42-
room = self.__find_or_create_room(room_name)
42+
def get_peer_access(
43+
self,
44+
room_name: str,
45+
username: str,
46+
room_type: RoomConfigRoomType | None,
47+
) -> PeerAccess:
48+
room = self.__find_or_create_room(
49+
room_name, room_type or RoomConfigRoomType.FULL_FEATURE
50+
)
4351
peer_access = self.peer_name_to_access.get(username)
4452
peer_in_room = self.__is_in_room(room, peer_access)
4553

@@ -63,7 +71,9 @@ def handle_notification(self, notification: betterproto.Message):
6371
case _:
6472
pass
6573

66-
def __find_or_create_room(self, room_name: str) -> Room:
74+
def __find_or_create_room(
75+
self, room_name: str, room_type: RoomConfigRoomType
76+
) -> Room:
6777
if room_name in self.room_name_to_room_id:
6878
self.logger.info("Room %s, already exists in the Fishjam", room_name)
6979

@@ -74,6 +84,7 @@ def __find_or_create_room(self, room_name: str) -> Room:
7484
max_peers=self.config.max_peers,
7585
webhook_url=self.config.webhook_url,
7686
peerless_purge_timeout=self.config.peerless_purge_timeout,
87+
room_type=room_type.value,
7788
)
7889
new_room = self.fishjam_client.create_room(options=options)
7990

examples/room_manager/routes.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from flask import Flask, abort, jsonify, request
44

55
from fishjam import receive_binary
6+
from fishjam.room import RoomConfigRoomType
67

78
from .room_service import RoomService
89

@@ -15,7 +16,13 @@ def health_check():
1516

1617
@app.get("/api/rooms/<room_name>/users/<peer_name>")
1718
def get_room_params(room_name, peer_name):
18-
access_data = room_service.get_peer_access(room_name, peer_name)
19+
raw_room_type = request.args.get("roomType")
20+
try:
21+
room_type = RoomConfigRoomType(raw_room_type) if raw_room_type else None
22+
except ValueError:
23+
return abort(400)
24+
25+
access_data = room_service.get_peer_access(room_name, peer_name, room_type)
1926
response = asdict(access_data)
2027

2128
response["peerToken"] = response.pop("peer_token")
@@ -25,12 +32,18 @@ def get_room_params(room_name, peer_name):
2532
@app.get("/api/rooms")
2633
def get_room_query():
2734
room_name = request.args.get("roomName")
35+
raw_room_type = request.args.get("roomType")
2836
peer_name = request.args.get("peerName")
2937

3038
if not room_name or not peer_name:
3139
return abort(400)
3240

33-
access_data = room_service.get_peer_access(room_name, peer_name)
41+
try:
42+
room_type = RoomConfigRoomType(raw_room_type) if raw_room_type else None
43+
except ValueError:
44+
return abort(400)
45+
46+
access_data = room_service.get_peer_access(room_name, peer_name, room_type)
3447
response = asdict(access_data)
3548

3649
response["peerToken"] = response.pop("peer_token")

fishjam/room/__init__.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1-
from fishjam._openapi_client.models import RoomConfig, RoomConfigVideoCodec
1+
from fishjam._openapi_client.models import (
2+
RoomConfig,
3+
RoomConfigRoomType,
4+
RoomConfigVideoCodec,
5+
)
26

3-
__all__ = ["RoomConfig", "RoomConfigVideoCodec"]
7+
__all__ = ["RoomConfig", "RoomConfigVideoCodec", "RoomConfigRoomType"]

0 commit comments

Comments
 (0)