Skip to content

Commit 30c1c10

Browse files
committed
Merge branch 'release/2023.3.0'
2 parents ae4853f + a77c9eb commit 30c1c10

File tree

6 files changed

+39
-6
lines changed

6 files changed

+39
-6
lines changed

CHANGES.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@
1111

1212
## develop
1313

14+
## 2023.3.0
15+
16+
**2023-07-06**
17+
18+
- [CHANGE] Sora.create_connection() が複数のシグナリング URL を受け取れるようにする
19+
- C++ SDK の仕様に合わせるための破壊的な変更
20+
- `signaling_url` は廃止して `signaling_urls` で置き換える
21+
- `signaling_urls``List[str]` を受け取る
22+
- @sile
23+
1424
## 2023.2.0
1525

1626
**2023-07-03**

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[project]
22
name = "sora_sdk"
33
authors = [{ name = "Shiguredo Inc.", email = "contact+pypi@shiguredo.jp" }]
4-
version = "2023.2.0"
4+
version = "2023.3.0"
55
description = "WebRTC SFU Sora Python SDK"
66
readme = "README.md"
77
license = { file = "LICENSE" }

src/sora.cpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Sora::~Sora() {
1212
}
1313

1414
std::shared_ptr<SoraConnection> Sora::CreateConnection(
15-
const std::string& signaling_url,
15+
const nb::handle& signaling_urls,
1616
const std::string& role,
1717
const std::string& channel_id,
1818
std::optional<std::string> client_id,
@@ -59,7 +59,7 @@ std::shared_ptr<SoraConnection> Sora::CreateConnection(
5959
sora::SoraSignalingConfig config;
6060
config.pc_factory = factory_->GetPeerConnectionFactory();
6161
config.observer = conn;
62-
config.signaling_urls.push_back(signaling_url);
62+
config.signaling_urls = ConvertSignalingUrls(signaling_urls);
6363
config.role = role;
6464
config.channel_id = channel_id;
6565
if (client_id) {
@@ -291,6 +291,27 @@ Sora::ConvertForwardingFilter(const nb::handle value) {
291291
return filter;
292292
}
293293

294+
std::vector<std::string> Sora::ConvertSignalingUrls(const nb::handle value) {
295+
auto signaling_urls_value =
296+
ConvertJsonValue(value, "Invalid JSON value in signaling_urls");
297+
if (!signaling_urls_value.is_array()) {
298+
throw nb::type_error("`signaling_urls` should be a list of strings");
299+
}
300+
301+
std::vector<std::string> signaling_urls;
302+
for (auto signaling_url_value : signaling_urls_value.as_array()) {
303+
if (!signaling_url_value.is_string()) {
304+
throw nb::type_error("`signaling_urls` should be a list of strings");
305+
}
306+
signaling_urls.push_back(boost::json::value_to<std::string>(signaling_url_value));
307+
}
308+
309+
if (signaling_urls.empty()) {
310+
throw nb::type_error("`signaling_urls` should not be empty");
311+
}
312+
return signaling_urls;
313+
}
314+
294315
std::vector<sora::SoraSignalingConfig::DataChannel> Sora::ConvertDataChannels(
295316
const nb::handle value) {
296317
std::vector<sora::SoraSignalingConfig::DataChannel> data_channels;

src/sora.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class Sora : public DisposePublisher {
2020

2121
std::shared_ptr<SoraConnection> CreateConnection(
2222
// 必須パラメータ
23-
const std::string& signaling_url,
23+
const nb::handle& signaling_urls,
2424
const std::string& role,
2525
const std::string& channel_id,
2626

@@ -75,6 +75,8 @@ class Sora : public DisposePublisher {
7575
const char* error_message);
7676
std::vector<sora::SoraSignalingConfig::DataChannel> ConvertDataChannels(
7777
const nb::handle value);
78+
std::vector<std::string> ConvertSignalingUrls(const nb::handle value);
79+
7880
boost::optional<sora::SoraSignalingConfig::ForwardingFilter>
7981
ConvertForwardingFilter(const nb::handle value);
8082

src/sora_sdk_ext.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ NB_MODULE(sora_sdk_ext, m) {
213213
nb::class_<Sora>(m, "Sora")
214214
.def(nb::init<std::optional<bool>, std::optional<std::string>>(),
215215
"use_hardware_encoder"_a = nb::none(), "openh264"_a = nb::none())
216-
.def("create_connection", &Sora::CreateConnection, "signaling_url"_a,
216+
.def("create_connection", &Sora::CreateConnection, "signaling_urls"_a,
217217
"role"_a, "channel_id"_a, "client_id"_a = nb::none(),
218218
"bundle_id"_a = nb::none(), "metadata"_a = nb::none(),
219219
"signaling_notify_metadata"_a = nb::none(),

tests/test_recvonly.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def test_sendonly():
1212
sora = Sora()
1313

1414
conn = sora.create_connection(
15-
signaling_url=os.environ.get("TEST_SIGNALING_URL"),
15+
signaling_urls=[os.environ.get("TEST_SIGNALING_URL")],
1616
role="recvonly",
1717
channel_id=os.environ.get("TEST_CHANNEL_ID_PREFIX") + "sora-python-sdk-test",
1818
metadata={"access_token": os.environ.get("TEST_SECRET_KEY")}

0 commit comments

Comments
 (0)