Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions docker-compose-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ services:
FJ_ADMIN_TOKEN: "12345"
FJ_PORT: 5002
FJ_SECRET_KEY_BASE: "super-secret-key"
FJ_SIP_IP: "127.0.0.1"
FJ_COMPONENTS_USED: "rtsp file hls recording sip"
FJ_BROADCASTING_ENABLED: "true"
FJ_BROADCASTER_URL: "http://broadcaster:4000"
FJ_BROADCASTER_TOKEN: "broadcaster_token"
Expand All @@ -25,8 +23,6 @@ services:
- "5002:5002"
- "49999:49999"
- "50000-50050:50000-50050/udp"
volumes:
- ./tests/fixtures:/app/fishjam_resources/file_component_sources

fishjam-prep:
image: curlimages/curl:8.12.1
Expand Down
4 changes: 4 additions & 0 deletions fishjam/_openapi_client/api/room/add_peer.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ def _parse_response(
response_404 = Error.from_dict(response.json())

return response_404
if response.status_code == 409:
response_409 = Error.from_dict(response.json())

return response_409
if response.status_code == 503:
response_503 = Error.from_dict(response.json())

Expand Down
2 changes: 2 additions & 0 deletions fishjam/_openapi_client/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
from .streams_listing_response import StreamsListingResponse
from .subscribe_mode import SubscribeMode
from .subscribe_tracks_body import SubscribeTracksBody
from .subscriptions import Subscriptions
from .track import Track
from .track_metadata_type_0 import TrackMetadataType0
from .track_type import TrackType
Expand Down Expand Up @@ -78,6 +79,7 @@
"StreamsListingResponse",
"SubscribeMode",
"SubscribeTracksBody",
"Subscriptions",
"Track",
"TrackMetadataType0",
"TrackType",
Expand Down
10 changes: 6 additions & 4 deletions fishjam/_openapi_client/models/peer.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

if TYPE_CHECKING:
from ..models.peer_metadata import PeerMetadata
from ..models.subscriptions import Subscriptions
from ..models.track import Track


Expand All @@ -31,7 +32,7 @@ class Peer:
metadata (Union['PeerMetadata', None]): Custom metadata set by the peer Example: {'name': 'FishjamUser'}.
status (PeerStatus): Informs about the peer status Example: disconnected.
subscribe_mode (SubscribeMode): Configuration of peer's subscribing policy
subscriptions (list[str]): Describes peer's subscriptions in manual mode
subscriptions (Subscriptions): Describes peer's subscriptions in manual mode
tracks (list['Track']): List of all peer's tracks
type_ (PeerType): Peer type Example: webrtc.
"""
Expand All @@ -40,7 +41,7 @@ class Peer:
metadata: Union["PeerMetadata", None]
status: PeerStatus
subscribe_mode: SubscribeMode
subscriptions: list[str]
subscriptions: "Subscriptions"
tracks: list["Track"]
type_: PeerType
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
Expand All @@ -60,7 +61,7 @@ def to_dict(self) -> dict[str, Any]:

subscribe_mode = self.subscribe_mode.value

subscriptions = self.subscriptions
subscriptions = self.subscriptions.to_dict()

tracks = []
for tracks_item_data in self.tracks:
Expand Down Expand Up @@ -88,6 +89,7 @@ def to_dict(self) -> dict[str, Any]:
@classmethod
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
from ..models.peer_metadata import PeerMetadata
from ..models.subscriptions import Subscriptions
from ..models.track import Track

d = dict(src_dict)
Expand All @@ -112,7 +114,7 @@ def _parse_metadata(data: object) -> Union["PeerMetadata", None]:

subscribe_mode = SubscribeMode(d.pop("subscribeMode"))

subscriptions = cast(list[str], d.pop("subscriptions"))
subscriptions = Subscriptions.from_dict(d.pop("subscriptions"))

tracks = []
_tracks = d.pop("tracks")
Expand Down
8 changes: 8 additions & 0 deletions fishjam/_openapi_client/models/stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,15 @@ class Stream:
"""Describes stream status

Attributes:
connected_viewers (int): Number of connected viewers
id (str): Assigned stream id
public (bool):
streamers (list['Streamer']): List of all streamers
viewers (list['Viewer']): List of all viewers
audio_only (Union[Unset, bool]): True if stream is restricted to audio only
"""

connected_viewers: int
id: str
public: bool
streamers: list["Streamer"]
Expand All @@ -39,6 +41,8 @@ class Stream:
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)

def to_dict(self) -> dict[str, Any]:
connected_viewers = self.connected_viewers

id = self.id

public = self.public
Expand All @@ -59,6 +63,7 @@ def to_dict(self) -> dict[str, Any]:
field_dict.update(self.additional_properties)
field_dict.update(
{
"connectedViewers": connected_viewers,
"id": id,
"public": public,
"streamers": streamers,
Expand All @@ -76,6 +81,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
from ..models.viewer import Viewer

d = dict(src_dict)
connected_viewers = d.pop("connectedViewers")

id = d.pop("id")

public = d.pop("public")
Expand All @@ -97,6 +104,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
audio_only = d.pop("audioOnly", UNSET)

stream = cls(
connected_viewers=connected_viewers,
id=id,
public=public,
streamers=streamers,
Expand Down
72 changes: 72 additions & 0 deletions fishjam/_openapi_client/models/subscriptions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
from collections.abc import Mapping
from typing import (
Any,
TypeVar,
cast,
)

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

T = TypeVar("T", bound="Subscriptions")


@_attrs_define
class Subscriptions:
"""Describes peer's subscriptions in manual mode

Attributes:
peers (list[str]): List of peer IDs this peer subscribes to
tracks (list[str]): List of track IDs this peer subscribes to
"""

peers: list[str]
tracks: list[str]
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)

def to_dict(self) -> dict[str, Any]:
peers = self.peers

tracks = self.tracks

field_dict: dict[str, Any] = {}
field_dict.update(self.additional_properties)
field_dict.update(
{
"peers": peers,
"tracks": tracks,
}
)

return field_dict

@classmethod
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
d = dict(src_dict)
peers = cast(list[str], d.pop("peers"))

tracks = cast(list[str], d.pop("tracks"))

subscriptions = cls(
peers=peers,
tracks=tracks,
)

subscriptions.additional_properties = d
return subscriptions

@property
def additional_keys(self) -> list[str]:
return list(self.additional_properties.keys())

def __getitem__(self, key: str) -> Any:
return self.additional_properties[key]

def __setitem__(self, key: str, value: Any) -> None:
self.additional_properties[key] = value

def __delitem__(self, key: str) -> None:
del self.additional_properties[key]

def __contains__(self, key: str) -> bool:
return key in self.additional_properties
9 changes: 9 additions & 0 deletions fishjam/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ def from_response(response: Response[Error]):
case HTTPStatus.SERVICE_UNAVAILABLE:
return ServiceUnavailableError(errors)

case HTTPStatus.CONFLICT:
return ConflictError(errors)

case _:
return InternalServerError(errors)

Expand Down Expand Up @@ -61,3 +64,9 @@ class InternalServerError(HTTPError):
def __init__(self, errors):
"""@private"""
super().__init__(errors)


class ConflictError(HTTPError):
def __init__(self, errors):
"""@private"""
super().__init__(errors)
8 changes: 4 additions & 4 deletions tests/test_room_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
Room,
RoomOptions,
)
from fishjam._openapi_client.models import SubscribeMode
from fishjam._openapi_client.models import SubscribeMode, Subscriptions
from fishjam.errors import (
BadRequestError,
ConflictError,
NotFoundError,
ServiceUnavailableError,
UnauthorizedError,
)
from fishjam.peer import (
Expand Down Expand Up @@ -179,7 +179,7 @@ def _assert_peer_created(
tracks=[],
metadata=PeerMetadata.from_dict({"peer": {}, "server": server_metadata}),
subscribe_mode=SubscribeMode.AUTO,
subscriptions=[],
subscriptions=Subscriptions(peers=[], tracks=[]),
)

room = room_api.get_room(room_id)
Expand Down Expand Up @@ -213,7 +213,7 @@ def test_peer_limit_reached(self, room_api: FishjamClient):

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

with pytest.raises(ServiceUnavailableError):
with pytest.raises(ConflictError):
room_api.create_peer(room.id)


Expand Down