From ea8057ed931973da35113cb8728ec63b835888a4 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Fri, 21 Jul 2023 10:34:08 +0200 Subject: [PATCH] using anyhow::Result to solve multiple error type issue --- demos/rust-cosmos-broadcaster/bin/service.rs | 2 +- demos/rust-cosmos-broadcaster/src/client.rs | 4 ++-- demos/rust-cosmos-broadcaster/src/lib.rs | 15 ++++++++------- demos/rust-cosmos-broadcaster/src/service.rs | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/demos/rust-cosmos-broadcaster/bin/service.rs b/demos/rust-cosmos-broadcaster/bin/service.rs index 89ad029d73..0a84b2bf74 100644 --- a/demos/rust-cosmos-broadcaster/bin/service.rs +++ b/demos/rust-cosmos-broadcaster/bin/service.rs @@ -17,7 +17,7 @@ async fn main() -> anyhow::Result<()> { loop { // listen out for incoming requests from mixnet, parse and match them let request: (RequestTypes, AnonymousSenderTag) = - listen_and_parse_request(&mut client).await?; + listen_and_parse_request(&mut client).await?; // grab sender_tag from parsed request for anonymous replies let return_recipient: AnonymousSenderTag = request.1; match request.0 { diff --git a/demos/rust-cosmos-broadcaster/src/client.rs b/demos/rust-cosmos-broadcaster/src/client.rs index dde2dd80e3..26b5f03608 100644 --- a/demos/rust-cosmos-broadcaster/src/client.rs +++ b/demos/rust-cosmos-broadcaster/src/client.rs @@ -16,7 +16,7 @@ pub async fn offline_sign( to: AccountId, client: &mut MixnetClient, sp_address: Recipient, -) -> Result { +) -> anyhow::Result { let denom: Denom = DEFAULT_DENOM.parse().unwrap(); let signer = DirectSecp256k1HdWallet::from_mnemonic(DEFAULT_PREFIX, mnemonic.clone()); let signer_address = signer.try_derive_accounts().unwrap()[0].address().clone(); @@ -97,7 +97,7 @@ pub async fn send_tx( base58_tx: String, sp_address: Recipient, client: &mut MixnetClient, -) -> Result<(String, bool), std::io::Error> { +) -> anyhow::Result<(String, bool)> { let broadcast_request = crate::BroadcastRequest { base58_tx_bytes: base58_tx, }; diff --git a/demos/rust-cosmos-broadcaster/src/lib.rs b/demos/rust-cosmos-broadcaster/src/lib.rs index b9f1921999..b0bf310cf2 100644 --- a/demos/rust-cosmos-broadcaster/src/lib.rs +++ b/demos/rust-cosmos-broadcaster/src/lib.rs @@ -1,4 +1,3 @@ -use anyhow::Result; use cosmrs::{tendermint, AccountId}; use nym_sdk::mixnet::{ AnonymousSenderTag, MixnetClient, MixnetClientBuilder, ReconstructedMessage, StoragePaths, @@ -64,7 +63,9 @@ pub async fn create_client(config_path: PathBuf) -> MixnetClient { // parse returned response from service: ignore empty SURB data packets + parse incoming message to struct or error // we know we are expecting JSON here but an irl helper would parse conditionally on bytes / string incoming -pub async fn listen_and_parse_response(client: &mut MixnetClient) -> Result { +pub async fn listen_and_parse_response( + client: &mut MixnetClient +) -> anyhow::Result { let mut message: Vec = Vec::new(); // get the actual message - discard the empty vec sent along with the SURB topup request @@ -79,9 +80,9 @@ pub async fn listen_and_parse_response(client: &mut MixnetClient) -> Result -> JSON String let mut parsed = String::new(); if let Some(r) = message.iter().next() { - parsed = String::from_utf8(r.message.clone()).unwrap(); + parsed = String::from_utf8(r.message.clone())?; } - let sp_response: crate::ResponseTypes = serde_json::from_str(&parsed).unwrap(); + let sp_response: crate::ResponseTypes = serde_json::from_str(&parsed)?; Ok(sp_response) } @@ -89,7 +90,7 @@ pub async fn listen_and_parse_response(client: &mut MixnetClient) -> Result Result<(RequestTypes, AnonymousSenderTag), std::io::Error> { +) -> anyhow::Result<(RequestTypes, AnonymousSenderTag)> { let mut message: Vec = Vec::new(); // get the actual message - discard the empty vec sent along with the SURB topup request @@ -104,9 +105,9 @@ pub async fn listen_and_parse_request( // parse vec -> JSON String let mut parsed = String::new(); if let Some(r) = message.iter().next() { - parsed = String::from_utf8(r.message.clone()).unwrap(); + parsed = String::from_utf8(r.message.clone())?; } - let client_request: crate::RequestTypes = serde_json::from_str(&parsed).unwrap(); + let client_request: crate::RequestTypes = serde_json::from_str(&parsed)?; // get the sender_tag for anon reply let return_recipient = message[0].sender_tag.unwrap(); diff --git a/demos/rust-cosmos-broadcaster/src/service.rs b/demos/rust-cosmos-broadcaster/src/service.rs index 1882f4904f..c97cfebbb6 100644 --- a/demos/rust-cosmos-broadcaster/src/service.rs +++ b/demos/rust-cosmos-broadcaster/src/service.rs @@ -15,7 +15,7 @@ pub async fn get_sequence( ) -> Result { // get signer information let sequence = broadcaster.get_sequence(&signer_address).await?; - let chain_id: tendermint::chain::Id = broadcaster.get_chain_id().await?; + let chain_id: tendermint::chain::Id = broadcaster.get_chain_id().await?; // unwrap(); Ok(crate::SequenceRequestResponse { account_number: sequence.account_number, sequence: sequence.sequence,