breez_sdk_spark/persist/
path.rs1use std::{path::PathBuf, str::FromStr};
2
3use bitcoin::hashes::{Hash, sha256};
4
5use crate::{Network, SdkError, Seed};
6
7pub fn default_storage_path(
8 data_dir: &str,
9 network: &Network,
10 seed: &Seed,
11) -> Result<PathBuf, SdkError> {
12 let storage_dir = std::path::PathBuf::from_str(data_dir)?;
13 let path_suffix: String = match seed {
14 crate::Seed::Mnemonic {
15 mnemonic,
16 passphrase,
17 } => {
18 bip39::Mnemonic::parse(mnemonic)
20 .map_err(|e| SdkError::InvalidInput(format!("Invalid mnemonic: {e}")))?;
21 let str = format!("{mnemonic}:{passphrase:?}");
22 sha256::Hash::hash(str.as_bytes())
23 .to_string()
24 .chars()
25 .take(8)
26 .collect()
27 }
28 crate::Seed::Entropy(vec) => sha256::Hash::hash(vec.as_slice())
29 .to_string()
30 .chars()
31 .take(8)
32 .collect(),
33 };
34
35 Ok(storage_dir
36 .join(network.to_string().to_lowercase())
37 .join(path_suffix))
38}