agora-python-server-sdk 2.4.7__tar.gz → 2.4.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/PKG-INFO +13 -1
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/README.md +12 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/_ctypes_handle/_ctypes_data.py +4 -2
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora_python_server_sdk.egg-info/PKG-INFO +13 -1
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora_python_server_sdk.egg-info/SOURCES.txt +4 -1
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/setup.py +1 -1
- agora_python_server_sdk-2.4.8/tests/test_agora_base.py +51 -0
- agora_python_server_sdk-2.4.8/tests/test_rtc_ctypes_data.py +97 -0
- agora_python_server_sdk-2.4.8/tests/test_rtm_ctypes_data.py +72 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/MANIFEST.in +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/__init__.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/__init__.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/_ctypes_handle/_audio_frame_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/_ctypes_handle/_local_user_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/_ctypes_handle/_rtc_connection_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/_ctypes_handle/_video_encoded_frame_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/_ctypes_handle/_video_frame_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/_utils/globals.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/agora_base.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/agora_parameter.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/agora_service.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/audio_encoded_frame_sender.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/audio_frame_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/audio_pcm_data_sender.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/audio_sessionctrl.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/audio_vad_manager.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/external_audio_processor.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/local_audio_track.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/local_user.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/local_user_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/local_video_track.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/media_node_factory.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/remote_audio_track.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/remote_video_track.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/rtc_connection.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/rtc_connection_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/utils/audio_consumer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/utils/vad_dump.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/video_encoded_frame_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/video_encoded_image_sender.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/video_frame_observer.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/video_frame_sender.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/voice_detection.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtm/__init__.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtm/_ctypes_handle/_ctypes_data.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtm/rtm_base.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtm/rtm_client.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtm/rtm_event_handler.py +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora_python_server_sdk.egg-info/dependency_links.txt +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora_python_server_sdk.egg-info/top_level.txt +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/pyproject.toml +0 -0
- {agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: agora_python_server_sdk
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.8
|
|
4
4
|
Summary: A Python SDK for Agora Server
|
|
5
5
|
Home-page: https://github.com/AgoraIO-Extensions/Agora-Python-Server-SDK
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -65,6 +65,18 @@ python agora_rtc/examples/example_audio_pcm_send.py --appId=xxx --channelId=xxx
|
|
|
65
65
|
|
|
66
66
|
# Release Note
|
|
67
67
|
|
|
68
|
+
## 2026.06.24 Release Version 2.4.8
|
|
69
|
+
|
|
70
|
+
- **Bugfixes**:
|
|
71
|
+
- Fixed an implementation error in `encryptionconfigure`.
|
|
72
|
+
- **New Features**:
|
|
73
|
+
- Added `ut test case`
|
|
74
|
+
- Usage:
|
|
75
|
+
cd agora_rtc
|
|
76
|
+
pip install pytest
|
|
77
|
+
PYTHONPATH=. pytest tests/ -v
|
|
78
|
+
or pytest tests/ -v
|
|
79
|
+
|
|
68
80
|
## 2026.06.24 Release Version 2.4.7
|
|
69
81
|
|
|
70
82
|
- **New Features**:
|
|
@@ -50,6 +50,18 @@ python agora_rtc/examples/example_audio_pcm_send.py --appId=xxx --channelId=xxx
|
|
|
50
50
|
|
|
51
51
|
# Release Note
|
|
52
52
|
|
|
53
|
+
## 2026.06.24 Release Version 2.4.8
|
|
54
|
+
|
|
55
|
+
- **Bugfixes**:
|
|
56
|
+
- Fixed an implementation error in `encryptionconfigure`.
|
|
57
|
+
- **New Features**:
|
|
58
|
+
- Added `ut test case`
|
|
59
|
+
- Usage:
|
|
60
|
+
cd agora_rtc
|
|
61
|
+
pip install pytest
|
|
62
|
+
PYTHONPATH=. pytest tests/ -v
|
|
63
|
+
or pytest tests/ -v
|
|
64
|
+
|
|
53
65
|
## 2026.06.24 Release Version 2.4.7
|
|
54
66
|
|
|
55
67
|
- **New Features**:
|
|
@@ -1246,14 +1246,16 @@ class EncryptionConfigInner(ctypes.Structure):
|
|
|
1246
1246
|
_fields_ = [
|
|
1247
1247
|
("encryption_mode", ctypes.c_int),
|
|
1248
1248
|
("encryption_key", ctypes.c_char_p),
|
|
1249
|
-
("encryption_kdf_salt", ctypes.c_uint8 * 32)
|
|
1249
|
+
("encryption_kdf_salt", ctypes.c_uint8 * 32),
|
|
1250
|
+
("datastream_encryption_enabled", ctypes.c_bool),
|
|
1250
1251
|
]
|
|
1251
1252
|
|
|
1252
1253
|
def get(self):
|
|
1253
1254
|
return EncryptionConfig(
|
|
1254
1255
|
encryption_mode=self.encryption_mode,
|
|
1255
1256
|
encryption_key=self.encryption_key.decode() if self.encryption_key else "",
|
|
1256
|
-
encryption_kdf_salt=bytearray(bytes(self.encryption_kdf_salt))
|
|
1257
|
+
encryption_kdf_salt=bytearray(bytes(self.encryption_kdf_salt)),
|
|
1258
|
+
datastream_encryption_enabled=self.datastream_encryption_enabled
|
|
1257
1259
|
)
|
|
1258
1260
|
|
|
1259
1261
|
@staticmethod
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: agora_python_server_sdk
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.8
|
|
4
4
|
Summary: A Python SDK for Agora Server
|
|
5
5
|
Home-page: https://github.com/AgoraIO-Extensions/Agora-Python-Server-SDK
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -65,6 +65,18 @@ python agora_rtc/examples/example_audio_pcm_send.py --appId=xxx --channelId=xxx
|
|
|
65
65
|
|
|
66
66
|
# Release Note
|
|
67
67
|
|
|
68
|
+
## 2026.06.24 Release Version 2.4.8
|
|
69
|
+
|
|
70
|
+
- **Bugfixes**:
|
|
71
|
+
- Fixed an implementation error in `encryptionconfigure`.
|
|
72
|
+
- **New Features**:
|
|
73
|
+
- Added `ut test case`
|
|
74
|
+
- Usage:
|
|
75
|
+
cd agora_rtc
|
|
76
|
+
pip install pytest
|
|
77
|
+
PYTHONPATH=. pytest tests/ -v
|
|
78
|
+
or pytest tests/ -v
|
|
79
|
+
|
|
68
80
|
## 2026.06.24 Release Version 2.4.7
|
|
69
81
|
|
|
70
82
|
- **New Features**:
|
|
@@ -44,4 +44,7 @@ agora/rtm/_ctypes_handle/_ctypes_data.py
|
|
|
44
44
|
agora_python_server_sdk.egg-info/PKG-INFO
|
|
45
45
|
agora_python_server_sdk.egg-info/SOURCES.txt
|
|
46
46
|
agora_python_server_sdk.egg-info/dependency_links.txt
|
|
47
|
-
agora_python_server_sdk.egg-info/top_level.txt
|
|
47
|
+
agora_python_server_sdk.egg-info/top_level.txt
|
|
48
|
+
tests/test_agora_base.py
|
|
49
|
+
tests/test_rtc_ctypes_data.py
|
|
50
|
+
tests/test_rtm_ctypes_data.py
|
|
@@ -134,7 +134,7 @@ class CustomInstallCommand(install):
|
|
|
134
134
|
|
|
135
135
|
setup(
|
|
136
136
|
name='agora_python_server_sdk',
|
|
137
|
-
version='2.4.
|
|
137
|
+
version='2.4.8',
|
|
138
138
|
description='A Python SDK for Agora Server',
|
|
139
139
|
long_description=open('README.md').read(),
|
|
140
140
|
long_description_content_type='text/markdown',
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""
|
|
2
|
+
author: Wei
|
|
3
|
+
date: 2026-07-01
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from agora.rtc.agora_base import (
|
|
7
|
+
AreaCode,
|
|
8
|
+
ChannelProfileType,
|
|
9
|
+
ClientRoleType,
|
|
10
|
+
RTCConnInfo,
|
|
11
|
+
VideoCodecType,
|
|
12
|
+
APMConfig,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_channel_profile_enum():
|
|
17
|
+
assert ChannelProfileType.CHANNEL_PROFILE_COMMUNICATION == 0
|
|
18
|
+
assert ChannelProfileType.CHANNEL_PROFILE_LIVE_BROADCASTING == 1
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_client_role_enum():
|
|
22
|
+
assert ClientRoleType.CLIENT_ROLE_BROADCASTER == 1
|
|
23
|
+
assert ClientRoleType.CLIENT_ROLE_AUDIENCE == 2
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_video_codec_enum():
|
|
27
|
+
assert VideoCodecType.VIDEO_CODEC_H264 == 2
|
|
28
|
+
assert VideoCodecType.VIDEO_CODEC_AV1 == 12
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_area_code_enum():
|
|
32
|
+
assert AreaCode.AREA_CODE_GLOB == 0xFFFFFFFF
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def test_rtc_conn_info_dataclass():
|
|
36
|
+
info = RTCConnInfo(
|
|
37
|
+
id=1,
|
|
38
|
+
channel_id="test_channel",
|
|
39
|
+
state=2,
|
|
40
|
+
local_user_id="user_1",
|
|
41
|
+
internal_uid=10086,
|
|
42
|
+
)
|
|
43
|
+
assert info.channel_id == "test_channel"
|
|
44
|
+
assert info.internal_uid == 10086
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def test_apm_config_to_json_string():
|
|
48
|
+
config = APMConfig()
|
|
49
|
+
json_str = config._to_json_string()
|
|
50
|
+
assert '"enabled":false' in json_str
|
|
51
|
+
assert '"ainsModelPref":10' in json_str
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""
|
|
2
|
+
author: Wei
|
|
3
|
+
date: 2026-07-01
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from agora.rtc.agora_base import (
|
|
7
|
+
AudioEncoderConfiguration,
|
|
8
|
+
AudioProfileType,
|
|
9
|
+
AudioSubscriptionOptions,
|
|
10
|
+
EncryptionConfig,
|
|
11
|
+
EncodedVideoFrameInfo,
|
|
12
|
+
RTCConnInfo,
|
|
13
|
+
VideoCodecType,
|
|
14
|
+
VideoDimensions,
|
|
15
|
+
)
|
|
16
|
+
from agora.rtc._ctypes_handle._ctypes_data import (
|
|
17
|
+
AudioEncoderConfigurationInner,
|
|
18
|
+
AudioSubscriptionOptionsInner,
|
|
19
|
+
EncryptionConfigInner,
|
|
20
|
+
EncodedVideoFrameInfoInner,
|
|
21
|
+
RTCConnInfoInner,
|
|
22
|
+
VideoDimensionsInner,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_audio_encoder_configuration_inner_create():
|
|
27
|
+
config = AudioEncoderConfiguration(audioProfile=AudioProfileType.AUDIO_PROFILE_MUSIC_STANDARD)
|
|
28
|
+
inner = AudioEncoderConfigurationInner.create(config)
|
|
29
|
+
assert inner.audioProfile == AudioProfileType.AUDIO_PROFILE_MUSIC_STANDARD
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_rtc_conn_info_inner_create_and_get():
|
|
33
|
+
info = RTCConnInfo(
|
|
34
|
+
id=1,
|
|
35
|
+
channel_id="channel_a",
|
|
36
|
+
state=2,
|
|
37
|
+
local_user_id="user_1",
|
|
38
|
+
internal_uid=10086,
|
|
39
|
+
)
|
|
40
|
+
inner = RTCConnInfoInner.create(info)
|
|
41
|
+
assert inner.channel_id == b"channel_a"
|
|
42
|
+
assert inner.local_user_id == b"user_1"
|
|
43
|
+
|
|
44
|
+
restored = inner.get()
|
|
45
|
+
assert restored.channel_id == "channel_a"
|
|
46
|
+
assert restored.local_user_id == "user_1"
|
|
47
|
+
assert restored.internal_uid == 10086
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_audio_subscription_options_inner_create_and_get():
|
|
51
|
+
options = AudioSubscriptionOptions(
|
|
52
|
+
pcm_data_only=1,
|
|
53
|
+
bytes_per_sample=2,
|
|
54
|
+
number_of_channels=2,
|
|
55
|
+
sample_rate_hz=48000,
|
|
56
|
+
)
|
|
57
|
+
inner = AudioSubscriptionOptionsInner.create(options)
|
|
58
|
+
assert inner.pcm_data_only == 1
|
|
59
|
+
assert inner.sample_rate_hz == 48000
|
|
60
|
+
|
|
61
|
+
restored = inner.get()
|
|
62
|
+
assert restored.number_of_channels == 2
|
|
63
|
+
assert restored.sample_rate_hz == 48000
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def test_encryption_config_inner_create_and_get():
|
|
67
|
+
config = EncryptionConfig(
|
|
68
|
+
encryption_mode=1,
|
|
69
|
+
encryption_key="secret",
|
|
70
|
+
encryption_kdf_salt=bytearray(b"salt"),
|
|
71
|
+
datastream_encryption_enabled=True,
|
|
72
|
+
)
|
|
73
|
+
inner = EncryptionConfigInner.create(config)
|
|
74
|
+
assert inner.encryption_key == b"secret"
|
|
75
|
+
assert inner.encryption_kdf_salt[0] == ord("s")
|
|
76
|
+
|
|
77
|
+
restored = inner.get()
|
|
78
|
+
assert restored.encryption_key == "secret"
|
|
79
|
+
assert restored.datastream_encryption_enabled is True
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def test_video_dimensions_and_encoded_frame_info_inner():
|
|
83
|
+
dimensions = VideoDimensions(width=1280, height=720)
|
|
84
|
+
dim_inner = VideoDimensionsInner.create(dimensions)
|
|
85
|
+
assert dim_inner.width == 1280
|
|
86
|
+
assert dim_inner.height == 720
|
|
87
|
+
assert dim_inner.get().height == 720
|
|
88
|
+
|
|
89
|
+
info = EncodedVideoFrameInfo(
|
|
90
|
+
codec_type=VideoCodecType.VIDEO_CODEC_H264,
|
|
91
|
+
width=1280,
|
|
92
|
+
height=720,
|
|
93
|
+
frames_per_second=30,
|
|
94
|
+
)
|
|
95
|
+
info_inner = EncodedVideoFrameInfoInner.create(info)
|
|
96
|
+
assert info_inner.codec_type == VideoCodecType.VIDEO_CODEC_H264
|
|
97
|
+
assert info_inner.get().frames_per_second == 30
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"""
|
|
2
|
+
author: Wei
|
|
3
|
+
date: 2026-07-01
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import ctypes
|
|
7
|
+
|
|
8
|
+
from agora.rtm.rtm_base import (
|
|
9
|
+
PublishOptions,
|
|
10
|
+
RtmEncryptionConfig,
|
|
11
|
+
RtmLogConfig,
|
|
12
|
+
RtmLogLevel,
|
|
13
|
+
SubscribeOptions,
|
|
14
|
+
)
|
|
15
|
+
from agora.rtm._ctypes_handle._ctypes_data import (
|
|
16
|
+
MessageEventInner,
|
|
17
|
+
PublishOptionsInner,
|
|
18
|
+
RtmEncryptionConfigInner,
|
|
19
|
+
RtmLogConfigInner,
|
|
20
|
+
SubscribeOptionsInner,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def test_subscribe_options_inner_create():
|
|
25
|
+
options = SubscribeOptions(with_message=False, with_presence=True)
|
|
26
|
+
inner = SubscribeOptionsInner.create(options)
|
|
27
|
+
assert inner.withMessage is False
|
|
28
|
+
assert inner.withPresence is True
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_rtm_encryption_config_inner_create():
|
|
32
|
+
config = RtmEncryptionConfig(encryption_key="secret", encryption_salt="salt")
|
|
33
|
+
inner = RtmEncryptionConfigInner.create(config)
|
|
34
|
+
assert inner.encryptionKey == b"secret"
|
|
35
|
+
assert inner.encryptionSalt[0] == ord("s")
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_rtm_log_config_inner_create():
|
|
39
|
+
config = RtmLogConfig(
|
|
40
|
+
file_path="/tmp/rtm.log",
|
|
41
|
+
file_size_kb=1024,
|
|
42
|
+
log_level=RtmLogLevel.RTM_LOG_LEVEL_INFO,
|
|
43
|
+
)
|
|
44
|
+
inner = RtmLogConfigInner.create(config)
|
|
45
|
+
assert inner.filePath == b"/tmp/rtm.log"
|
|
46
|
+
assert inner.fileSizeInKB == 1024
|
|
47
|
+
assert inner.level == RtmLogLevel.RTM_LOG_LEVEL_INFO
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def test_publish_options_inner_create():
|
|
51
|
+
options = PublishOptions(custom_type="demo", store_in_history=True)
|
|
52
|
+
inner = PublishOptionsInner.create(options)
|
|
53
|
+
assert inner.customType == b"demo"
|
|
54
|
+
assert inner.storeInHistory is True
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_message_event_inner_get():
|
|
58
|
+
payload = b"hello"
|
|
59
|
+
inner = MessageEventInner(
|
|
60
|
+
channelType=1,
|
|
61
|
+
messageType=0,
|
|
62
|
+
channelName=b"channel_a",
|
|
63
|
+
channelTopic=b"topic_a",
|
|
64
|
+
message=ctypes.c_char_p(payload),
|
|
65
|
+
messageLength=len(payload),
|
|
66
|
+
publisher=b"user_1",
|
|
67
|
+
customType=b"text",
|
|
68
|
+
)
|
|
69
|
+
event = inner.get()
|
|
70
|
+
assert event.channel_name == "channel_a"
|
|
71
|
+
assert event.message == payload
|
|
72
|
+
assert event.publisher == "user_1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/agora_parameter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/audio_frame_observer.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/audio_pcm_data_sender.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/audio_sessionctrl.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/audio_vad_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/local_audio_track.py
RENAMED
|
File without changes
|
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/local_user_observer.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/local_video_track.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/media_node_factory.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/remote_audio_track.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/remote_video_track.py
RENAMED
|
File without changes
|
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/rtc_connection_observer.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/utils/audio_consumer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/video_frame_observer.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/video_frame_sender.py
RENAMED
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtc/voice_detection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agora_python_server_sdk-2.4.7 → agora_python_server_sdk-2.4.8}/agora/rtm/rtm_event_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|