Skip to content

Commit 131186b

Browse files
authored
Use PeerCreationResponse class in RoomApi.add_peer (#36)
* Use PeerCreationResponse class in RoomApi.add_peer * Run formatter * Fixes after rebase * Fix test * Fix examples * Fix typo
1 parent 4c7bfe9 commit 131186b

File tree

7 files changed

+48
-38
lines changed

7 files changed

+48
-38
lines changed

examples/room_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
print((jellyfish_address, room))
1515

1616
# Add peer to the room
17-
peer_token, peer_webrtc = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
18-
print((peer_token, peer_webrtc))
17+
result = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
18+
print((result.token, result.peer, result.peer_websocket_url))
1919

2020
# Add component to the room
2121
component_hls = room_api.add_component(room.id, options=ComponentOptionsHLS())

jellyfish/_openapi_client/models/component_details_response.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
from typing import (
2-
TYPE_CHECKING,
3-
Any,
4-
Dict,
5-
List,
6-
Type,
7-
TypeVar,
8-
Union,
9-
)
1+
from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
102

113
from attrs import define as _attrs_define
124
from attrs import field as _attrs_field

jellyfish/_openapi_client/models/peer_details_response_data.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar
1+
from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
22

33
from attrs import define as _attrs_define
44
from attrs import field as _attrs_field
55

6+
from ..types import UNSET, Unset
7+
68
if TYPE_CHECKING:
79
from ..models.peer import Peer
810

@@ -18,6 +20,8 @@ class PeerDetailsResponseData:
1820
"""Describes peer status"""
1921
token: str
2022
"""Token for authorizing websocket connection"""
23+
peer_websocket_url: Union[Unset, str] = UNSET
24+
"""Websocket URL to which peer has to connect"""
2125
additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
2226
"""@private"""
2327

@@ -26,6 +30,7 @@ def to_dict(self) -> Dict[str, Any]:
2630
peer = self.peer.to_dict()
2731

2832
token = self.token
33+
peer_websocket_url = self.peer_websocket_url
2934

3035
field_dict: Dict[str, Any] = {}
3136
field_dict.update(self.additional_properties)
@@ -35,6 +40,8 @@ def to_dict(self) -> Dict[str, Any]:
3540
"token": token,
3641
}
3742
)
43+
if peer_websocket_url is not UNSET:
44+
field_dict["peer_websocket_url"] = peer_websocket_url
3845

3946
return field_dict
4047

@@ -48,9 +55,12 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
4855

4956
token = d.pop("token")
5057

58+
peer_websocket_url = d.pop("peer_websocket_url", UNSET)
59+
5160
peer_details_response_data = cls(
5261
peer=peer,
5362
token=token,
63+
peer_websocket_url=peer_websocket_url,
5464
)
5565

5666
peer_details_response_data.additional_properties = d

jellyfish/api/_room_api.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
ComponentRTSP,
3030
ComponentSIP,
3131
DialConfig,
32-
Peer,
32+
PeerDetailsResponseData,
3333
PeerOptionsWebRTC,
3434
Room,
3535
RoomConfig,
@@ -110,7 +110,9 @@ def get_room(self, room_id: str) -> Room:
110110

111111
return self._request(room_get_room, room_id=room_id).data
112112

113-
def add_peer(self, room_id: str, options: PeerOptionsWebRTC) -> Tuple[str, Peer]:
113+
def add_peer(
114+
self, room_id: str, options: PeerOptionsWebRTC
115+
) -> PeerDetailsResponseData:
114116
"""
115117
Creates peer in the room
116118
@@ -126,7 +128,11 @@ def add_peer(self, room_id: str, options: PeerOptionsWebRTC) -> Tuple[str, Peer]
126128
json_body = AddPeerJsonBody(type=peer_type, options=options)
127129

128130
resp = self._request(room_add_peer, room_id=room_id, json_body=json_body)
129-
return (resp.data.token, resp.data.peer)
131+
return PeerDetailsResponseData(
132+
peer=resp.data.peer,
133+
token=resp.data.token,
134+
peer_websocket_url=resp.data.peer_websocket_url,
135+
)
130136

131137
def delete_peer(self, room_id: str, peer_id: str) -> None:
132138
"""Deletes peer"""

tests/support/peer_socket.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,15 @@
1414

1515

1616
class PeerSocket:
17-
def __init__(self, server_address, auto_close=False):
18-
self._server_address = server_address
17+
def __init__(self, socket_address, auto_close=False):
18+
self._socket_address = socket_address
1919

2020
self._ready = False
2121
self._ready_event = None
2222
self._auto_close = auto_close
2323

2424
async def connect(self, token):
25-
async with client.connect(
26-
f"ws://{self._server_address}/socket/peer/websocket"
27-
) as websocket:
25+
async with client.connect(f"ws://{self._socket_address}") as websocket:
2826
msg = PeerMessage(auth_request=PeerMessageAuthRequest(token=token))
2927
await websocket.send(bytes(msg))
3028

tests/test_notifier.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -132,14 +132,14 @@ async def test_peer_connected_disconnected(
132132

133133
_, room = room_api.create_room(webhook_url=WEBHOOK_URL)
134134

135-
peer_token, peer = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
135+
result = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
136136

137-
peer_socket = PeerSocket(server_address=SERVER_ADDRESS)
138-
peer_task = asyncio.create_task(peer_socket.connect(peer_token))
137+
peer_socket = PeerSocket(socket_address=result.peer_websocket_url)
138+
peer_task = asyncio.create_task(peer_socket.connect(result.token))
139139

140140
await peer_socket.wait_ready()
141141

142-
room_api.delete_peer(room.id, peer.id)
142+
room_api.delete_peer(room.id, result.peer.id)
143143

144144
room_api.delete_room(room.id)
145145

@@ -172,10 +172,12 @@ async def test_peer_connected_disconnected_deleted(
172172
peer_disconnected_timeout=1,
173173
)
174174

175-
peer_token, peer = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
175+
result = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
176176

177-
peer_socket = PeerSocket(server_address=SERVER_ADDRESS, auto_close=True)
178-
peer_task = asyncio.create_task(peer_socket.connect(peer_token))
177+
peer_socket = PeerSocket(
178+
socket_address=result.peer_websocket_url, auto_close=True
179+
)
180+
peer_task = asyncio.create_task(peer_socket.connect(result.token))
179181

180182
await peer_socket.wait_ready()
181183

@@ -201,10 +203,10 @@ async def test_peer_connected_room_deleted(
201203
await notifier.wait_ready()
202204

203205
_, room = room_api.create_room(webhook_url=WEBHOOK_URL)
204-
peer_token, _peer = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
206+
result = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
205207

206-
peer_socket = PeerSocket(server_address=SERVER_ADDRESS)
207-
peer_task = asyncio.create_task(peer_socket.connect(peer_token))
208+
peer_socket = PeerSocket(socket_address=result.peer_websocket_url)
209+
peer_task = asyncio.create_task(peer_socket.connect(result.token))
208210

209211
await peer_socket.wait_ready()
210212

@@ -253,10 +255,10 @@ class TestReceivingMetrics:
253255
@pytest.mark.asyncio
254256
async def test_metrics_with_one_peer(self, room_api: RoomApi, notifier: Notifier):
255257
_, room = room_api.create_room()
256-
peer_token, _peer = room_api.add_peer(room.id, PeerOptionsWebRTC())
258+
result = room_api.add_peer(room.id, PeerOptionsWebRTC())
257259

258-
peer_socket = PeerSocket(server_address=SERVER_ADDRESS)
259-
peer_task = asyncio.create_task(peer_socket.connect(peer_token))
260+
peer_socket = PeerSocket(socket_address=result.peer_websocket_url)
261+
peer_task = asyncio.create_task(peer_socket.connect(result.token))
260262

261263
await peer_socket.wait_ready()
262264

tests/test_room_api.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -405,23 +405,23 @@ def _assert_peer_created(self, room_api, webrtc_peer, room_id):
405405
def test_with_specified_options(self, room_api: RoomApi):
406406
_, room = room_api.create_room()
407407

408-
_token, peer = room_api.add_peer(
408+
peer = room_api.add_peer(
409409
room.id, options=PeerOptionsWebRTC(enable_simulcast=True)
410-
)
410+
).peer
411411

412412
self._assert_peer_created(room_api, peer, room.id)
413413

414414
def test_default_options(self, room_api: RoomApi):
415415
_, room = room_api.create_room()
416416

417-
_token, peer = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
417+
peer = room_api.add_peer(room.id, options=PeerOptionsWebRTC()).peer
418418

419419
self._assert_peer_created(room_api, peer, room.id)
420420

421421
def test_peer_limit_reached(self, room_api: RoomApi):
422422
_, room = room_api.create_room(max_peers=1)
423423

424-
_token, peer = room_api.add_peer(room.id, options=PeerOptionsWebRTC())
424+
peer = room_api.add_peer(room.id, options=PeerOptionsWebRTC()).peer
425425

426426
self._assert_peer_created(room_api, peer, room.id)
427427

@@ -432,10 +432,12 @@ def test_peer_limit_reached(self, room_api: RoomApi):
432432
class TestDeletePeer:
433433
def test_valid(self, room_api: RoomApi):
434434
_, room = room_api.create_room()
435-
_, peer = room_api.add_peer(
435+
result = room_api.add_peer(
436436
room.id, options=PeerOptionsWebRTC(enable_simulcast=True)
437437
)
438438

439+
peer = result.peer
440+
439441
room_api.delete_peer(room.id, peer.id)
440442

441443
assert [] == room_api.get_room(room.id).peers

0 commit comments

Comments
 (0)