in shenyu-client-rust/src/core.rs [128:195]
fn set_up_gateway_service_url(&mut self) -> Result<(), String> {
self.gateway_base_urls = self
.env
.register
.servers
.split(',')
.map(ToString::to_string)
.collect();
if self.gateway_base_urls.is_empty() {
return Err(String::from("shenyu.register.servers is empty"));
}
self.register_meta_data_path_list = self
.gateway_base_urls
.iter()
.map(|url| format!("{url}{REGISTER_META_DATA_SUFFIX}"))
.collect();
self.register_uri_list = self
.gateway_base_urls
.iter()
.map(|url| format!("{url}{REGISTER_URI_SUFFIX}"))
.collect();
self.register_token_servers = self
.gateway_base_urls
.iter()
.map(|url| format!("{url}{PLATFORM_LOGIN_SUFFIX}"))
.collect();
self.register_discover_config_servers = self
.gateway_base_urls
.iter()
.map(|url| format!("{url}{REGISTER_DISCOVERY_CONFIG_SUFFIX}"))
.collect();
self.register_offline_servers = self
.gateway_base_urls
.iter()
.map(|url| format!("{url}{REGISTER_OFFLINE_SUFFIX}"))
.collect();
#[allow(unused_assignments)]
let mut host = None;
#[cfg(not(target_os = "macos"))]
{
host = match local_ip_address::local_ip() {
Ok(IpAddr::V4(ipv4)) => Some(IpAddr::V4(ipv4)),
Ok(IpAddr::V6(ipv6)) => Some(IpAddr::from(ipv6.to_ipv4().unwrap())),
_ => None,
};
}
#[cfg(target_os = "macos")]
{
use local_ip_address::macos;
for (_, ipaddr) in macos::list_afinet_netifas().unwrap() {
if IpAddr::V4(std::net::Ipv4Addr::new(127, 0, 0, 1)).eq(&ipaddr) {
continue;
}
host = match ipaddr {
IpAddr::V4(ipv4) => Some(IpAddr::from(ipv4)),
IpAddr::V6(_) => continue,
};
}
}
if let Some(host) = host {
self.host = Some(host.to_string());
Ok(())
} else {
Err("Failed to determine local IP address".to_string())
}
}