From df3d478caa7d38658cb631005d7fa9ecdf530460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Tue, 10 Jan 2023 23:28:26 +0100 Subject: [PATCH] rust-sdk: make new_from_dir return result --- Cargo.lock | 31 +++++++++++++++-------- sdk/rust/nym-sdk/examples/persist_keys.rs | 2 +- sdk/rust/nym-sdk/src/error.rs | 6 +++++ sdk/rust/nym-sdk/src/mixnet/paths.rs | 13 +++++++--- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a5e6151786..eaa4d1aad9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -686,7 +686,7 @@ dependencies = [ [[package]] name = "client-core" -version = "1.1.4" +version = "1.1.5" dependencies = [ "async-trait", "client-connections", @@ -1788,7 +1788,7 @@ dependencies = [ [[package]] name = "explorer-api" -version = "1.1.1" +version = "1.1.2" dependencies = [ "chrono", "clap 4.0.26", @@ -2085,6 +2085,7 @@ dependencies = [ "nymsphinx", "pemstore", "rand 0.7.3", + "serde", "task", "thiserror", "tokio", @@ -3233,7 +3234,7 @@ dependencies = [ [[package]] name = "nym-api" -version = "1.1.4" +version = "1.1.5" dependencies = [ "anyhow", "async-trait", @@ -3329,7 +3330,7 @@ dependencies = [ [[package]] name = "nym-cli" -version = "1.1.4" +version = "1.1.5" dependencies = [ "anyhow", "base64", @@ -3360,14 +3361,18 @@ dependencies = [ "bs58", "cfg-if 1.0.0", "clap 4.0.26", + "coconut-bandwidth-contract-common", + "coconut-dkg-common", "comfy-table", "cosmrs", "cosmwasm-std", + "cw-utils", "handlebars", "humantime-serde", "k256", "log", "mixnet-contract-common", + "multisig-contract-common", "network-defaults", "rand 0.6.5", "serde", @@ -3383,7 +3388,7 @@ dependencies = [ [[package]] name = "nym-client" -version = "1.1.4" +version = "1.1.5" dependencies = [ "build-information", "clap 4.0.26", @@ -3423,10 +3428,11 @@ dependencies = [ [[package]] name = "nym-gateway" -version = "1.1.4" +version = "1.1.5" dependencies = [ "anyhow", "async-trait", + "atty", "bip39", "bs58", "build-information", @@ -3450,12 +3456,14 @@ dependencies = [ "mixnode-common", "network-defaults", "nym-api-requests", + "nym-types", "nymsphinx", "once_cell", "pemstore", "pretty_env_logger", "rand 0.7.3", "serde", + "serde_json", "sqlx 0.5.11", "statistics-common", "subtle-encoding", @@ -3471,9 +3479,10 @@ dependencies = [ [[package]] name = "nym-mixnode" -version = "1.1.4" +version = "1.1.5" dependencies = [ "anyhow", + "atty", "bs58", "build-information", "clap 4.0.26", @@ -3492,6 +3501,7 @@ dependencies = [ "mixnet-client", "mixnode-common", "nonexhaustive-delayqueue", + "nym-types", "nymsphinx", "nymsphinx-params", "nymsphinx-types", @@ -3500,6 +3510,7 @@ dependencies = [ "rand 0.7.3", "rocket", "serde", + "serde_json", "sysinfo", "task", "tokio", @@ -3513,7 +3524,7 @@ dependencies = [ [[package]] name = "nym-network-requester" -version = "1.1.4" +version = "1.1.5" dependencies = [ "async-trait", "clap 4.0.26", @@ -3545,7 +3556,7 @@ dependencies = [ [[package]] name = "nym-network-statistics" -version = "1.1.4" +version = "1.1.5" dependencies = [ "dirs", "log", @@ -3601,7 +3612,7 @@ dependencies = [ [[package]] name = "nym-socks5-client" -version = "1.1.4" +version = "1.1.5" dependencies = [ "build-information", "clap 4.0.26", diff --git a/sdk/rust/nym-sdk/examples/persist_keys.rs b/sdk/rust/nym-sdk/examples/persist_keys.rs index 0e88293764..8cf0567edc 100644 --- a/sdk/rust/nym-sdk/examples/persist_keys.rs +++ b/sdk/rust/nym-sdk/examples/persist_keys.rs @@ -11,7 +11,7 @@ async fn main() { // Setting `KeyMode::Keep` will use existing keys, and existing config, if there is one. // Regardles of `user_chosen_gateway`. - let keys = mixnet::StoragePaths::new_from_dir(mixnet::KeyMode::Keep, &config_dir); + let keys = mixnet::StoragePaths::new_from_dir(mixnet::KeyMode::Keep, &config_dir).unwrap(); // Provide key paths for the client to read/write keys to. let client = mixnet::ClientBuilder::new(None, Some(keys)).unwrap(); diff --git a/sdk/rust/nym-sdk/src/error.rs b/sdk/rust/nym-sdk/src/error.rs index 18e5718e13..77f6c1492c 100644 --- a/sdk/rust/nym-sdk/src/error.rs +++ b/sdk/rust/nym-sdk/src/error.rs @@ -1,3 +1,5 @@ +use std::path::PathBuf; + #[derive(Debug, thiserror::Error)] pub enum Error { #[error("i/o error: {0}")] @@ -8,12 +10,16 @@ pub enum Error { TomlDeserializationError(#[from] toml::de::Error), #[error(transparent)] ClientCoreError(#[from] client_core::error::ClientCoreError), + #[error("key file encountered that we don't want to overwrite")] DontOverwrite, #[error("shared gateway key file encountered that we don't want to overwrite")] DontOverwriteGatewayKey, #[error("no gateway config available for writing")] GatewayNotAvailableForWriting, + + #[error("expected to received a directory, received: {0}")] + ExpectedDirectory(PathBuf), } pub type Result = std::result::Result; diff --git a/sdk/rust/nym-sdk/src/mixnet/paths.rs b/sdk/rust/nym-sdk/src/mixnet/paths.rs index 7a824ecce4..ad66f7bbcd 100644 --- a/sdk/rust/nym-sdk/src/mixnet/paths.rs +++ b/sdk/rust/nym-sdk/src/mixnet/paths.rs @@ -1,6 +1,8 @@ use client_core::config::persistence::key_pathfinder::ClientKeyPathfinder; use std::path::{Path, PathBuf}; +use crate::error::{Error, Result}; + #[derive(Clone, Debug)] pub enum KeyMode { /// Use existing key files if they exists, otherwise create new ones. @@ -58,9 +60,12 @@ pub struct StoragePaths { } impl StoragePaths { - pub fn new_from_dir(operating_mode: KeyMode, dir: &Path) -> Self { - assert!(!dir.is_file(), "WIP"); - Self { + pub fn new_from_dir(operating_mode: KeyMode, dir: &Path) -> Result { + if !dir.is_file() { + return Err(Error::ExpectedDirectory(dir.to_owned())) + } + + Ok(Self { // These filenames were chosen to match the ones we use in `nym-client`. Consider // changing the defaults operating_mode, @@ -73,7 +78,7 @@ impl StoragePaths { gateway_endpoint_config: dir.join("gateway_endpoint_config.toml"), credential_database_path: dir.join("db.sqlite"), reply_surb_database_path: dir.join("persistent_reply_store.sqlite"), - } + }) } }