Skip to content

Commit 0193d0f

Browse files
committed
allow using the sdk with fishjam id
1 parent 7604b08 commit 0193d0f

File tree

7 files changed

+48
-11
lines changed

7 files changed

+48
-11
lines changed

.tool-versions

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
python 3.13.5
2+
poetry 2.1.3

examples/room_manager/room_service.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ class PeerAccess:
2424
room: Resource
2525
peer: Resource
2626
peer_token: str
27-
url: str
2827

2928

3029
class RoomService:
3130
def __init__(self, args: Namespace, logger: Logger):
3231
self.fishjam_client = FishjamClient(
33-
fishjam_url=args.fishjam_url,
32+
fishjam_id=args.fishjam_id,
3433
management_token=args.management_token,
34+
fishjam_url=args.fishjam_url,
3535
)
3636
self.url = args.fishjam_url.replace("http", "ws")
3737
self.room_name_to_room_id: dict[str, str] = {}
@@ -105,7 +105,6 @@ def __create_peer(self, room_name: str, peer_name: str) -> PeerAccess:
105105
room=Resource(id=room_id, name=room_name),
106106
peer=Resource(id=peer.id, name=peer_name),
107107
peer_token=token,
108-
url=self.url,
109108
)
110109

111110
self.peer_name_to_access[peer_name] = peer_access

fishjam/_ws_notifier.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,26 @@
2121
ALLOWED_NOTIFICATIONS,
2222
AllowedNotification,
2323
)
24+
from fishjam.utils import get_fishjam_url
2425

2526

2627
class FishjamNotifier:
2728
"""
2829
Allows for receiving WebSocket messages from Fishjam.
2930
"""
3031

31-
def __init__(self, fishjam_url: str, management_token: str):
32+
def __init__(
33+
self,
34+
fishjam_id: str,
35+
management_token: str,
36+
fishjam_url: str | None = None,
37+
):
3238
"""
3339
Create FishjamNotifier instance, providing the fishjam url and management token.
3440
"""
3541

36-
self._fishjam_url = (
37-
f"{fishjam_url.replace('http', 'ws')}/socket/server/websocket"
38-
)
42+
websocket_url = get_fishjam_url(fishjam_id, fishjam_url).replace("http", "ws")
43+
self._fishjam_url = f"{websocket_url}/socket/server/websocket"
3944
self._management_token: str = management_token
4045
self._websocket: client.WebSocketClientProtocol | None = None
4146
self._ready: bool = False

fishjam/api/_client.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@
44
from fishjam._openapi_client.models import Error
55
from fishjam._openapi_client.types import Response
66
from fishjam.errors import HTTPError
7+
from fishjam.utils import get_fishjam_url
78

89

910
class Client:
10-
def __init__(self, fishjam_url: str, management_token: str):
11-
self.client = AuthenticatedClient(f"{fishjam_url}", token=management_token)
11+
def __init__(
12+
self, fishjam_id: str, management_token: str, *, fishjam_url: str | None = None
13+
):
14+
self.client = AuthenticatedClient(
15+
get_fishjam_url(fishjam_id, fishjam_url),
16+
token=management_token,
17+
)
1218

1319
def _request(self, method, **kwargs):
1420
response = method.sync_detailed(client=self.client, **kwargs)

fishjam/api/_fishjam_client.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,21 @@ class PeerOptions:
8282
class FishjamClient(Client):
8383
"""Allows for managing rooms"""
8484

85-
def __init__(self, fishjam_url: str, management_token: str):
85+
def __init__(
86+
self,
87+
fishjam_id: str,
88+
management_token: str,
89+
*,
90+
fishjam_url: str | None = None,
91+
):
8692
"""
8793
Create FishjamClient instance, providing the fishjam url and managment token.
8894
"""
89-
super().__init__(fishjam_url=fishjam_url, management_token=management_token)
95+
super().__init__(
96+
fishjam_id=fishjam_id,
97+
management_token=management_token,
98+
fishjam_url=fishjam_url,
99+
)
90100

91101
def create_peer(
92102
self, room_id: str, options: PeerOptions | None = None

fishjam/errors.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,7 @@ class InternalServerError(HTTPError):
6161
def __init__(self, errors):
6262
"""@private"""
6363
super().__init__(errors)
64+
65+
66+
class MissingFishjamIdError(Exception):
67+
pass

fishjam/utils.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from fishjam.errors import MissingFishjamIdError
2+
3+
4+
def get_fishjam_url(fishjam_id: str | None, fishjam_url: str | None) -> str:
5+
if not fishjam_url and not fishjam_id:
6+
raise MissingFishjamIdError
7+
8+
if fishjam_url:
9+
return fishjam_url
10+
11+
return f"https://fishjam.io/api/v1/connect/{fishjam_id}"

0 commit comments

Comments
 (0)