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
2 changes: 1 addition & 1 deletion video/src/vonage_video/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '1.3.0'
__version__ = '1.4.0'
19 changes: 19 additions & 0 deletions video/src/vonage_video/models/audio_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,25 @@ class AudioConnectorWebSocket(BaseModel):
streams (list[str]): Stream IDs to include. If not provided, all streams are included.
headers (dict): The headers to send to your WebSocket server.
audio_rate (AudioSampleRate): The audio sample rate in Hertz.
bidirectional (bool): Whether the websocket is bidirectional.
"""

uri: str
streams: Optional[list[str]] = None
headers: Optional[dict] = None
audio_rate: Optional[AudioSampleRate] = Field(None, serialization_alias='audioRate')
bidirectional: Optional[bool] = Field(
None, description="Whether the websocket is bidirectional."
)

def model_dump(self, *args, **kwargs):
data = super().model_dump(*args, **kwargs)
if self.bidirectional is not True and 'bidirectional' in data:
del data['bidirectional']

if 'audioRate' in data and isinstance(data['audioRate'], AudioSampleRate):
data['audioRate'] = data['audioRate'].value
return data


class AudioConnectorOptions(BaseModel):
Expand All @@ -33,6 +46,12 @@ class AudioConnectorOptions(BaseModel):
token: str
websocket: AudioConnectorWebSocket

def model_dump(self, *args, **kwargs):
data = super().model_dump(*args, **kwargs)
if isinstance(self.websocket, AudioConnectorWebSocket):
data['websocket'] = self.websocket.model_dump(*args, **kwargs)
return data


class AudioConnectorData(BaseModel):
"""Class containing Audio Connector WebSocket ID and connection ID.
Expand Down
18 changes: 17 additions & 1 deletion video/tests/test_audio_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,18 @@


def test_audio_connector_options_model():
options_no_flag = AudioConnectorOptions(
session_id='test_session_id',
token='test_token',
websocket=AudioConnectorWebSocket(
uri='test_uri',
streams=['test_stream_id'],
headers={'test_header': 'test_value'},
audio_rate=AudioSampleRate.KHZ_16,
),
)
websocket_dict = options_no_flag.model_dump(by_alias=True)["websocket"]
assert "bidirectional" not in websocket_dict
options = AudioConnectorOptions(
session_id='test_session_id',
token='test_token',
Expand All @@ -28,19 +40,23 @@ def test_audio_connector_options_model():
streams=['test_stream_id'],
headers={'test_header': 'test_value'},
audio_rate=AudioSampleRate.KHZ_16,
bidirectional=True,
),
)

assert options.model_dump(by_alias=True) == {
actual = options.model_dump(by_alias=True)
expected = {
'sessionId': 'test_session_id',
'token': 'test_token',
'websocket': {
'uri': 'test_uri',
'streams': ['test_stream_id'],
'headers': {'test_header': 'test_value'},
'audioRate': 16000,
'bidirectional': True,
},
}
assert actual == expected


@responses.activate
Expand Down