From 16f00a482a44d642875faed92462e46e9ca60e5d Mon Sep 17 00:00:00 2001 From: CherishCai <785427346@qq.com> Date: Sat, 14 Sep 2024 21:39:17 +0800 Subject: [PATCH] bump: version=0.4.2 --- Cargo.toml | 4 ++-- examples/async_config.py | 2 +- examples/async_naming.py | 2 +- examples/config.py | 2 +- examples/naming.py | 2 +- nacos_sdk_rust_binding_py.pyi | 3 +++ src/async_config.rs | 17 ++++++++++++++--- src/async_naming.rs | 17 ++++++++++++++--- src/config.rs | 17 ++++++++++++++--- src/lib.rs | 20 ++++++++++++++++++-- src/naming.rs | 17 ++++++++++++++--- 11 files changed, 83 insertions(+), 20 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 93c0627..6586994 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nacos-sdk-rust-binding-py" -version = "0.4.0" +version = "0.4.2" edition = "2021" license = "Apache-2.0" publish = false @@ -23,7 +23,7 @@ pyo3-asyncio = { version = "0.20", features = ["tokio-runtime"] } # for block api futures = { version = "0.3", default-features = false, features = [] } -nacos-sdk = { version = "0.4.0", features = ["default"] } +nacos-sdk = { version = "0.4.2", features = ["default", "auth-by-aliyun"] } #nacos-sdk = { git = "https://github.com/nacos-group/nacos-sdk-rust.git", features = ["default"] } tracing-subscriber = { version = "0.3", features = ["default"] } diff --git a/examples/async_config.py b/examples/async_config.py index f9f806a..e00d494 100644 --- a/examples/async_config.py +++ b/examples/async_config.py @@ -3,7 +3,7 @@ import asyncio import nacos_sdk_rust_binding_py as nacos -client_options = nacos.ClientOptions("0.0.0.0:8848", "love", "simple_app_py", "nacos", "nacos") +client_options = nacos.ClientOptions("127.0.0.1:8848", "love", "simple_app_py", "nacos", "nacos") # 一般大部分情况下,应用下仅需一个客户端,而且需要长期持有直至应用停止。 # 因为它内部会初始化与服务端的长链接,后续的数据交互及服务变更等订阅,都是实时地通过长链接告知客户端的。 diff --git a/examples/async_naming.py b/examples/async_naming.py index 7612143..295aa10 100644 --- a/examples/async_naming.py +++ b/examples/async_naming.py @@ -3,7 +3,7 @@ import asyncio import nacos_sdk_rust_binding_py as nacos -client_options = nacos.ClientOptions("0.0.0.0:8848", "love", "simple_app_py", "nacos", "nacos") +client_options = nacos.ClientOptions("127.0.0.1:8848", "love", "simple_app_py", "nacos", "nacos") # 一般大部分情况下,应用下仅需一个客户端,而且需要长期持有直至应用停止。 # 因为它内部会初始化与服务端的长链接,后续的数据交互及服务变更等订阅,都是实时地通过长链接告知客户端的。 diff --git a/examples/config.py b/examples/config.py index 87e0923..c8081cd 100644 --- a/examples/config.py +++ b/examples/config.py @@ -3,7 +3,7 @@ import time import nacos_sdk_rust_binding_py as nacos -client_options = nacos.ClientOptions("0.0.0.0:8848", "love", "simple_app_py", "nacos", "nacos") +client_options = nacos.ClientOptions("127.0.0.1:8848", "love", "simple_app_py", "nacos", "nacos") # 一般大部分情况下,应用下仅需一个客户端,而且需要长期持有直至应用停止。 # 因为它内部会初始化与服务端的长链接,后续的数据交互及服务变更等订阅,都是实时地通过长链接告知客户端的。 diff --git a/examples/naming.py b/examples/naming.py index 2530ca2..077c604 100644 --- a/examples/naming.py +++ b/examples/naming.py @@ -3,7 +3,7 @@ import time import nacos_sdk_rust_binding_py as nacos -client_options = nacos.ClientOptions("0.0.0.0:8848", "love", "simple_app_py", "nacos", "nacos") +client_options = nacos.ClientOptions("127.0.0.1:8848", "love", "simple_app_py", "nacos", "nacos") # 一般大部分情况下,应用下仅需一个客户端,而且需要长期持有直至应用停止。 # 因为它内部会初始化与服务端的长链接,后续的数据交互及服务变更等订阅,都是实时地通过长链接告知客户端的。 diff --git a/nacos_sdk_rust_binding_py.pyi b/nacos_sdk_rust_binding_py.pyi index f774931..7fec4e0 100644 --- a/nacos_sdk_rust_binding_py.pyi +++ b/nacos_sdk_rust_binding_py.pyi @@ -8,6 +8,9 @@ class ClientOptions: app_name: Optional[str], username: Optional[str], password: Optional[str], + access_key: Optional[str], + access_secret: Optional[str], + signature_region_id: Optional[str], naming_push_empty_protection: Optional[bool], naming_load_cache_at_start: Optional[bool], ) -> None: ... diff --git a/src/async_config.rs b/src/async_config.rs index 808c493..ea56ad8 100644 --- a/src/async_config.rs +++ b/src/async_config.rs @@ -32,18 +32,29 @@ impl AsyncNacosConfigClient { ); // need enable_auth_plugin_http with username & password - let is_enable_auth = client_options.username.is_some() && client_options.password.is_some(); + let is_enable_auth_http = + client_options.username.is_some() && client_options.password.is_some(); + // need enable_auth_plugin_aliyun with access_key & access_secret + let is_enable_auth_aliyun = + client_options.access_key.is_some() && client_options.access_secret.is_some(); - let props = if is_enable_auth { + let props = if is_enable_auth_http { props .auth_username(client_options.username.unwrap()) .auth_password(client_options.password.unwrap()) + } else if is_enable_auth_aliyun { + props + .auth_access_key(client_options.access_key.unwrap()) + .auth_access_secret(client_options.access_secret.unwrap()) + .auth_signature_region_id(client_options.signature_region_id.unwrap()) } else { props }; - let config_service_builder = if is_enable_auth { + let config_service_builder = if is_enable_auth_http { nacos_sdk::api::config::ConfigServiceBuilder::new(props).enable_auth_plugin_http() + } else if is_enable_auth_aliyun { + nacos_sdk::api::config::ConfigServiceBuilder::new(props).enable_auth_plugin_aliyun() } else { nacos_sdk::api::config::ConfigServiceBuilder::new(props) }; diff --git a/src/async_naming.rs b/src/async_naming.rs index c541310..e04b234 100644 --- a/src/async_naming.rs +++ b/src/async_naming.rs @@ -39,18 +39,29 @@ impl AsyncNacosNamingClient { .naming_load_cache_at_start(client_options.naming_load_cache_at_start.unwrap_or(false)); // need enable_auth_plugin_http with username & password - let is_enable_auth = client_options.username.is_some() && client_options.password.is_some(); + let is_enable_auth_http = + client_options.username.is_some() && client_options.password.is_some(); + // need enable_auth_plugin_aliyun with access_key & access_secret + let is_enable_auth_aliyun = + client_options.access_key.is_some() && client_options.access_secret.is_some(); - let props = if is_enable_auth { + let props = if is_enable_auth_http { props .auth_username(client_options.username.unwrap()) .auth_password(client_options.password.unwrap()) + } else if is_enable_auth_aliyun { + props + .auth_access_key(client_options.access_key.unwrap()) + .auth_access_secret(client_options.access_secret.unwrap()) + .auth_signature_region_id(client_options.signature_region_id.unwrap()) } else { props }; - let naming_service_builder = if is_enable_auth { + let naming_service_builder = if is_enable_auth_http { nacos_sdk::api::naming::NamingServiceBuilder::new(props).enable_auth_plugin_http() + } else if is_enable_auth_aliyun { + nacos_sdk::api::naming::NamingServiceBuilder::new(props).enable_auth_plugin_aliyun() } else { nacos_sdk::api::naming::NamingServiceBuilder::new(props) }; diff --git a/src/config.rs b/src/config.rs index 1a478fc..271db2f 100644 --- a/src/config.rs +++ b/src/config.rs @@ -29,18 +29,29 @@ impl NacosConfigClient { ); // need enable_auth_plugin_http with username & password - let is_enable_auth = client_options.username.is_some() && client_options.password.is_some(); + let is_enable_auth_http = + client_options.username.is_some() && client_options.password.is_some(); + // need enable_auth_plugin_aliyun with access_key & access_secret + let is_enable_auth_aliyun = + client_options.access_key.is_some() && client_options.access_secret.is_some(); - let props = if is_enable_auth { + let props = if is_enable_auth_http { props .auth_username(client_options.username.unwrap()) .auth_password(client_options.password.unwrap()) + } else if is_enable_auth_aliyun { + props + .auth_access_key(client_options.access_key.unwrap()) + .auth_access_secret(client_options.access_secret.unwrap()) + .auth_signature_region_id(client_options.signature_region_id.unwrap()) } else { props }; - let config_service_builder = if is_enable_auth { + let config_service_builder = if is_enable_auth_http { nacos_sdk::api::config::ConfigServiceBuilder::new(props).enable_auth_plugin_http() + } else if is_enable_auth_aliyun { + nacos_sdk::api::config::ConfigServiceBuilder::new(props).enable_auth_plugin_aliyun() } else { nacos_sdk::api::config::ConfigServiceBuilder::new(props) }; diff --git a/src/lib.rs b/src/lib.rs index bfb7a3f..ee94cfa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -67,12 +67,21 @@ pub struct ClientOptions { /// AppName #[pyo3(set, get)] pub app_name: Option, - /// Username for Auth + /// Username for Auth, Login by Http with Token #[pyo3(set, get)] pub username: Option, - /// Password for Auth + /// Password for Auth, Login by Http with Token #[pyo3(set, get)] pub password: Option, + /// Access_Key for Auth, Login by Aliyun Ram + #[pyo3(set, get)] + pub access_key: Option, + /// Access_Secret for Auth, Login by Aliyun Ram + #[pyo3(set, get)] + pub access_secret: Option, + /// Signature_Region_Id for Auth, Login by Aliyun Ram + #[pyo3(set, get)] + pub signature_region_id: Option, /// naming push_empty_protection, default true #[pyo3(set, get)] pub naming_push_empty_protection: Option, @@ -84,12 +93,16 @@ pub struct ClientOptions { #[pymethods] impl ClientOptions { #[new] + #[allow(clippy::too_many_arguments)] pub fn new( server_addr: String, namespace: String, app_name: Option, username: Option, password: Option, + access_key: Option, + access_secret: Option, + signature_region_id: Option, naming_push_empty_protection: Option, naming_load_cache_at_start: Option, ) -> PyResult { @@ -99,6 +112,9 @@ impl ClientOptions { app_name, username, password, + access_key, + access_secret, + signature_region_id, naming_push_empty_protection, naming_load_cache_at_start, }) diff --git a/src/naming.rs b/src/naming.rs index 755c7ac..de7c6a7 100644 --- a/src/naming.rs +++ b/src/naming.rs @@ -33,18 +33,29 @@ impl NacosNamingClient { .naming_load_cache_at_start(client_options.naming_load_cache_at_start.unwrap_or(false)); // need enable_auth_plugin_http with username & password - let is_enable_auth = client_options.username.is_some() && client_options.password.is_some(); + let is_enable_auth_http = + client_options.username.is_some() && client_options.password.is_some(); + // need enable_auth_plugin_aliyun with access_key & access_secret + let is_enable_auth_aliyun = + client_options.access_key.is_some() && client_options.access_secret.is_some(); - let props = if is_enable_auth { + let props = if is_enable_auth_http { props .auth_username(client_options.username.unwrap()) .auth_password(client_options.password.unwrap()) + } else if is_enable_auth_aliyun { + props + .auth_access_key(client_options.access_key.unwrap()) + .auth_access_secret(client_options.access_secret.unwrap()) + .auth_signature_region_id(client_options.signature_region_id.unwrap()) } else { props }; - let naming_service_builder = if is_enable_auth { + let naming_service_builder = if is_enable_auth_http { nacos_sdk::api::naming::NamingServiceBuilder::new(props).enable_auth_plugin_http() + } else if is_enable_auth_aliyun { + nacos_sdk::api::naming::NamingServiceBuilder::new(props).enable_auth_plugin_aliyun() } else { nacos_sdk::api::naming::NamingServiceBuilder::new(props) };