From a9a96a084e9c89f9b65a2fb492bad577e7558ad1 Mon Sep 17 00:00:00 2001 From: Ivan Shumkov Date: Tue, 22 Oct 2024 17:49:38 +0700 Subject: [PATCH] chore: don't use empty uri --- packages/rs-dapi-client/src/address_list.rs | 15 +++++++++++++++ packages/rs-dapi-client/src/mock.rs | 4 +++- packages/rs-dapi-client/tests/mock_dapi_client.rs | 4 +++- packages/rs-sdk/src/mock/sdk.rs | 2 +- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/rs-dapi-client/src/address_list.rs b/packages/rs-dapi-client/src/address_list.rs index bf09b1af8c0..1ded9e21b8b 100644 --- a/packages/rs-dapi-client/src/address_list.rs +++ b/packages/rs-dapi-client/src/address_list.rs @@ -1,6 +1,7 @@ //! Subsystem to manage DAPI nodes. use chrono::Utc; +use dapi_grpc::tonic::codegen::http; use dapi_grpc::tonic::transport::Uri; use rand::{rngs::SmallRng, seq::IteratorRandom, SeedableRng}; use std::collections::HashSet; @@ -20,6 +21,16 @@ pub struct Address { uri: Uri, } +impl FromStr for Address { + type Err = AddressListError; + + fn from_str(s: &str) -> Result { + Uri::from_str(s) + .map(Address::from) + .map_err(AddressListError::from) + } +} + impl PartialEq for Address { fn eq(&self, other: &Self) -> bool { self.uri == other.uri @@ -81,6 +92,9 @@ impl Address { pub enum AddressListError { #[error("address {0} not found in the list")] AddressNotFound(#[cfg_attr(feature = "mocks", serde(with = "http_serde::uri"))] Uri), + #[error("unable parse address: {0}")] + #[cfg_attr(feature = "mocks", serde(skip))] + InvalidAddressUri(#[from] http::uri::InvalidUri), } /// A structure to manage DAPI addresses to select from @@ -200,6 +214,7 @@ impl AddressList { } } +// TODO: Must be changed to FromStr impl From<&str> for AddressList { fn from(value: &str) -> Self { let uri_list: Vec = value diff --git a/packages/rs-dapi-client/src/mock.rs b/packages/rs-dapi-client/src/mock.rs index c3cbd22d6d7..31a6b41a67f 100644 --- a/packages/rs-dapi-client/src/mock.rs +++ b/packages/rs-dapi-client/src/mock.rs @@ -270,7 +270,9 @@ impl Mockable for ExecutionResponse { R::mock_deserialize(data).map(|inner| ExecutionResponse { inner, retries: 0, - address: Address::from(Uri::default()), + address: "http://127.0.0.1:9000" + .parse() + .expect("failed to parse address"), }) } } diff --git a/packages/rs-dapi-client/tests/mock_dapi_client.rs b/packages/rs-dapi-client/tests/mock_dapi_client.rs index 49906a5f18f..b9ed0beaa32 100644 --- a/packages/rs-dapi-client/tests/mock_dapi_client.rs +++ b/packages/rs-dapi-client/tests/mock_dapi_client.rs @@ -26,7 +26,9 @@ async fn test_mock_get_identity_dapi_client() { let execution_response = ExecutionResponse { inner, retries: 0, - address: Address::from(Uri::default()), + address: "http://127.0.0.1:9000" + .parse() + .expect("failed to parse address"), }; dapi.expect(&request, &Ok(execution_response.clone())) diff --git a/packages/rs-sdk/src/mock/sdk.rs b/packages/rs-sdk/src/mock/sdk.rs index 7ea00a3ac7d..e7ac32402d6 100644 --- a/packages/rs-sdk/src/mock/sdk.rs +++ b/packages/rs-sdk/src/mock/sdk.rs @@ -368,7 +368,7 @@ impl MockDashPlatformSdk { &Ok(ExecutionResponse { inner: Default::default(), retries: 0, - address: Uri::default().into(), + address: "http://127.0.0.1".parse().expect("failed to parse address"), }), )?;