diff --git a/sdk/rust/nym-sdk/src/error.rs b/sdk/rust/nym-sdk/src/error.rs index 5b8e99f446..31ac246d49 100644 --- a/sdk/rust/nym-sdk/src/error.rs +++ b/sdk/rust/nym-sdk/src/error.rs @@ -131,6 +131,24 @@ pub enum Error { #[error("connect denied: {0:?}")] ConnectDenied(ConnectFailureReason), + + #[error("gateway directory error: {0}")] + GatewayDirectoryError(#[from] nym_gateway_directory::Error), + + #[error("did not receive Validator endpoint details")] + NoValidatorDetailsAvailable, + + #[error("did not receive URL")] + NoValidatorAPIUrl, + + #[error("did not receive NymVPN API URL")] + NoNymAPIUrl, + + #[error("no available gateway")] + NoGatewayAvailable, + + #[error("no IPR address on selected gateway")] + NoIPRAvailable, } impl Error { diff --git a/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper_ipr.rs b/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper_ipr.rs index d8ef50a73c..cc49f7234c 100644 --- a/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper_ipr.rs +++ b/sdk/rust/nym-sdk/src/stream_wrapper/mixnet_stream_wrapper_ipr.rs @@ -41,6 +41,7 @@ pub enum ConnectionState { } fn create_gateway_client() -> Result { + // TODO do something proper with this let user_agent = UserAgent { application: "nym-ipr-streamer".to_string(), version: "0.0.1".to_string(), @@ -52,17 +53,19 @@ fn create_gateway_client() -> Result { let api_url = mainnet_network_defaults .endpoints .first() - .unwrap() + .ok_or_else(|| Error::NoValidatorDetailsAvailable)? .api_url() - .unwrap(); + .ok_or_else(|| Error::NoValidatorAPIUrl)?; let nyxd_url = mainnet_network_defaults .endpoints .first() - .unwrap() + .ok_or_else(|| Error::NoValidatorDetailsAvailable)? .nyxd_url(); - let nym_vpn_api_url = mainnet_network_defaults.nym_vpn_api_url().unwrap(); + let nym_vpn_api_url = mainnet_network_defaults + .nym_vpn_api_url() + .ok_or_else(|| Error::NoNymAPIUrl)?; let config = GatewayConfig { nyxd_url, @@ -73,14 +76,11 @@ fn create_gateway_client() -> Result { wg_score_thresholds: None, }; - Ok(GatewayClient::new(config, user_agent).unwrap()) + Ok(GatewayClient::new(config, user_agent)?) } async fn get_ipr_addr(client: GatewayClient) -> Result { - let exit_gateways = client - .lookup_gateways(GatewayType::MixnetExit) - .await - .unwrap(); + let exit_gateways = client.lookup_gateways(GatewayType::MixnetExit).await?; info!("Found {} Exit Gateways", exit_gateways.len()); @@ -92,9 +92,11 @@ async fn get_ipr_addr(client: GatewayClient) -> Result