From 2e4ce82fd037984941315cabce5e4d003784f3b5 Mon Sep 17 00:00:00 2001 From: pythcoiner Date: Wed, 11 Mar 2026 04:16:33 +0100 Subject: [PATCH 1/2] lib: clippyfy --- cli/src/bin/hwi.rs | 6 +++--- cli/src/lib.rs | 4 ++-- src/bitbox.rs | 6 +++--- src/coldcard.rs | 6 +++--- src/jade/mod.rs | 20 ++++++++++---------- src/jade/pinserver.rs | 2 +- src/ledger.rs | 2 +- src/lib.rs | 8 ++++---- src/service.rs | 2 +- src/specter.rs | 9 ++++----- src/utils.rs | 2 +- 11 files changed, 33 insertions(+), 34 deletions(-) diff --git a/cli/src/bin/hwi.rs b/cli/src/bin/hwi.rs index 14c98ec..8f121bb 100644 --- a/cli/src/bin/hwi.rs +++ b/cli/src/bin/hwi.rs @@ -151,7 +151,7 @@ async fn main() -> Result<(), Box> { eprint!("{}", device.get_master_fingerprint().await?); eprint!(" {}", device.device_kind()); if let Ok(version) = device.get_version().await.map(|v| v.to_string()) { - eprint!(" {}", version); + eprint!(" {version}"); } eprintln!(); } @@ -194,7 +194,7 @@ async fn main() -> Result<(), Box> { _ => ("".into(), policy.clone()), }; let res = device.is_wallet_registered(&name, &policy).await?; - eprintln!("{}", res); + eprintln!("{res}"); } } Commands::Psbt(PsbtCommands::Sign { @@ -219,7 +219,7 @@ async fn main() -> Result<(), Box> { } } device.sign_tx(&mut psbt).await?; - eprintln!("{}", psbt); + eprintln!("{psbt}"); } } } diff --git a/cli/src/lib.rs b/cli/src/lib.rs index 2b3b9ed..1d064f0 100644 --- a/cli/src/lib.rs +++ b/cli/src/lib.rs @@ -33,14 +33,14 @@ pub mod command { } match Jade::enumerate().await { - Err(e) => println!("{:?}", e), + Err(e) => println!("{e:?}"), Ok(devices) => { for device in devices { let device = device.with_network(network); if let Ok(info) = device.get_info().await { if info.jade_state == jade::api::JadeState::Locked { if let Err(e) = device.auth().await { - eprintln!("auth {:?}", e); + eprintln!("auth {e:?}"); continue; } } diff --git a/src/bitbox.rs b/src/bitbox.rs index 9210520..4e14463 100644 --- a/src/bitbox.rs +++ b/src/bitbox.rs @@ -407,7 +407,7 @@ pub fn extract_script_config_policy(policy: &str) -> Result { let mut pubkeys: Vec = Vec::new(); for (i, key_str) in pubkeys_str.iter().enumerate() { - descriptor_template = descriptor_template.replace(key_str, &format!("@{}", i)); + descriptor_template = descriptor_template.replace(key_str, &format!("@{i}")); let pubkey = if let Ok(key) = Xpub::from_str(key_str) { KeyInfo { path: None, @@ -428,7 +428,7 @@ pub fn extract_script_config_policy(policy: &str) -> Result { let derivation_path = if path_str.is_empty() { DerivationPath::master() } else { - DerivationPath::from_str(&format!("m/{}", path_str)) + DerivationPath::from_str(&format!("m/{path_str}")) .map_err(|e| HWIError::InvalidParameter("policy", e.to_string()))? }; @@ -462,7 +462,7 @@ pub fn extract_first_appended_derivation_with_some_wildcard( ) -> Result<(Vec, bip389::Wildcard), HWIError> { let re = Regex::new(r"@\d+/[^,)]+").unwrap(); for capture in re.find_iter(template) { - if capture.as_str().contains(&format!("@{}", key_index)) { + if capture.as_str().contains(&format!("@{key_index}")) { if let Some((_, appended)) = capture.as_str().split_once('/') { let (derivations, wildcard) = bip389::parse_xkey_deriv(appended)?; if wildcard != bip389::Wildcard::None { diff --git a/src/coldcard.rs b/src/coldcard.rs index c259b3c..b38e99b 100644 --- a/src/coldcard.rs +++ b/src/coldcard.rs @@ -69,10 +69,10 @@ impl HWI for Coldcard { let path = if path.starts_with("m/") { path } else { - format!("m/{}", path) + format!("m/{path}") }; let path = coldcard::protocol::DerivationPath::new(&path) - .map_err(|e| HWIError::InvalidParameter("path", format!("{:?}", e)))?; + .map_err(|e| HWIError::InvalidParameter("path", format!("{e:?}")))?; let s = self.device()?.xpub(Some(path))?; Xpub::from_str(&s).map_err(|e| HWIError::Device(e.to_string())) } @@ -98,7 +98,7 @@ impl HWI for Coldcard { name: &str, policy: &str, ) -> Result, HWIError> { - let payload = format!("{{\"name\":\"{}\",\"desc\":\"{}\"}}", name, policy); + let payload = format!("{{\"name\":\"{name}\",\"desc\":\"{policy}\"}}"); let _ = self.device()?.miniscript_enroll(payload.as_bytes())?; Ok(None) } diff --git a/src/jade/mod.rs b/src/jade/mod.rs index 70ce247..5fff569 100644 --- a/src/jade/mod.rs +++ b/src/jade/mod.rs @@ -219,7 +219,7 @@ impl HWI for Jade { datavalues: keys .into_iter() .enumerate() - .map(|(i, key)| (format!("@{}", i), key)) + .map(|(i, key)| (format!("@{i}"), key)) .collect(), }), ) @@ -244,7 +244,7 @@ impl HWI for Jade { let datavalues: BTreeMap = keys .into_iter() .enumerate() - .map(|(i, key)| (format!("@{}", i), key)) + .map(|(i, key)| (format!("@{i}"), key)) .collect(); Ok(registered.descriptor_name == name @@ -501,11 +501,11 @@ impl From for TransportError { impl std::fmt::Display for TransportError { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { match self { - Self::Serialize(e) => write!(f, "{}", e), + Self::Serialize(e) => write!(f, "{e}"), Self::NoErrorOrResult => write!(f, "No Error or Result"), Self::NonceMismatch => write!(f, "Nonce mismatched"), - Self::Io(e) => write!(f, "{}", e), - Self::Serial(e) => write!(f, "{}", e), + Self::Io(e) => write!(f, "{e}"), + Self::Serial(e) => write!(f, "{e}"), } } } @@ -533,9 +533,9 @@ impl From for JadeError { impl std::fmt::Display for JadeError { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { match self { - Self::Transport(e) => write!(f, "{}", e), - Self::Rpc(e) => write!(f, "{:?}", e), - Self::PinServer(e) => write!(f, "{:?}", e), + Self::Transport(e) => write!(f, "{e}"), + Self::Rpc(e) => write!(f, "{e:?}"), + Self::PinServer(e) => write!(f, "{e:?}"), Self::HandShakeRefused => write!(f, "Handshake with pinserver refused"), } } @@ -551,10 +551,10 @@ impl From for HWIError { } else if e.code == api::ErrorCode::NetworkMismatch as i32 { HWIError::NetworkMismatch } else { - HWIError::Device(format!("{:?}", e)) + HWIError::Device(format!("{e:?}")) } } - JadeError::PinServer(e) => HWIError::Device(format!("{:?}", e)), + JadeError::PinServer(e) => HWIError::Device(format!("{e:?}")), JadeError::HandShakeRefused => { HWIError::Device("Handshake with pinserver refused".to_string()) } diff --git a/src/jade/pinserver.rs b/src/jade/pinserver.rs index cc7325e..a9a371f 100644 --- a/src/jade/pinserver.rs +++ b/src/jade/pinserver.rs @@ -31,7 +31,7 @@ impl PinServerClient { if res.status().is_success() { res.json().await.map_err(Error::from) } else { - Err(Error::Server(format!("{:?}", res))) + Err(Error::Server(format!("{res:?}"))) } } } diff --git a/src/ledger.rs b/src/ledger.rs index 31a30dd..5922e61 100644 --- a/src/ledger.rs +++ b/src/ledger.rs @@ -320,7 +320,7 @@ impl From> for HWIError { return HWIError::UserRefused; } }; - HWIError::Device(format!("{:#?}", e)) + HWIError::Device(format!("{e:#?}")) } } diff --git a/src/lib.rs b/src/lib.rs index 02b1b46..5a30420 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -45,7 +45,7 @@ pub enum Error { impl std::fmt::Display for Error { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { match self { - Error::ParsingPolicy(e) => write!(f, "{}", e), + Error::ParsingPolicy(e) => write!(f, "{e}"), Error::MissingPolicy => write!(f, "Missing policy"), Error::UnsupportedVersion => write!(f, "Unsupported version"), Error::UnsupportedInput => write!(f, "Unsupported input"), @@ -53,9 +53,9 @@ impl std::fmt::Display for Error { Error::DeviceDisconnected => write!(f, "Device disconnected"), Error::DeviceNotFound => write!(f, "Device not found"), Error::DeviceDidNotSign => write!(f, "Device did not sign"), - Error::Device(e) => write!(f, "{}", e), - Error::InvalidParameter(param, e) => write!(f, "Invalid parameter {}: {}", param, e), - Error::Unexpected(e) => write!(f, "{}", e), + Error::Device(e) => write!(f, "{e}"), + Error::InvalidParameter(param, e) => write!(f, "Invalid parameter {param}: {e}"), + Error::Unexpected(e) => write!(f, "{e}"), Error::UserRefused => write!(f, "User refused operation"), Error::NetworkMismatch => write!(f, "Device network is different"), Error::Bip86ChangeIndex => { diff --git a/src/service.rs b/src/service.rs index d7d7fb4..48ef235 100644 --- a/src/service.rs +++ b/src/service.rs @@ -1442,7 +1442,7 @@ fn handle_bitbox02( /// Prefer serial number for stable ID across USB ports; fall back to path. fn bitbox_id(device_info: &ledger::DeviceInfo) -> String { let id = if let Some(sn) = device_info.serial_number() { - format!("bitbox-{}", sn) + format!("bitbox-{sn}") } else { format!( "bitbox-{:?}-{}-{}", diff --git a/src/specter.rs b/src/specter.rs index 6da6729..db29fce 100644 --- a/src/specter.rs +++ b/src/specter.rs @@ -38,7 +38,7 @@ impl Specter { pub async fn get_extended_pubkey(&self, path: &DerivationPath) -> Result { self.transport - .request(&format!("\r\n\r\nxpub {}\r\n", path)) + .request(&format!("\r\n\r\nxpub {path}\r\n")) .await .and_then(|resp| Xpub::from_str(&resp).map_err(|e| SpecterError::Device(e.to_string()))) } @@ -74,7 +74,7 @@ impl Specter { pub async fn sign(&self, psbt: &Psbt) -> Result { self.transport - .request(&format!("\r\n\r\nsign {}\r\n", psbt)) + .request(&format!("\r\n\r\nsign {psbt}\r\n")) .await .and_then(|resp| { if resp == "error: User cancelled" { @@ -300,8 +300,7 @@ impl SerialTransport { }) .collect()), Err(e) => Err(SpecterError::Device(format!( - "Error listing serial ports: {}", - e + "Error listing serial ports: {e}" ))), } } @@ -332,7 +331,7 @@ impl std::fmt::Display for SpecterError { match self { Self::DeviceNotFound => write!(f, "Specter not found"), Self::DeviceDidNotSign => write!(f, "Specter did not sign the psbt"), - Self::Device(e) => write!(f, "Specter error: {}", e), + Self::Device(e) => write!(f, "Specter error: {e}"), Self::UserCancelled => write!(f, "User cancelled operation"), } } diff --git a/src/utils.rs b/src/utils.rs index 00d3194..908cfab 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -143,7 +143,7 @@ pub fn extract_keys_and_template(policy: &str) -> Result<(String, Ve let mut pubkeys: Vec = Vec::new(); for (i, key_str) in pubkeys_str.iter().enumerate() { - descriptor_template = descriptor_template.replace(key_str, &format!("@{}", i)); + descriptor_template = descriptor_template.replace(key_str, &format!("@{i}")); let pubkey = T::from_str(key_str).map_err(|_| Error::UnsupportedInput)?; pubkeys.push(pubkey); } From daf12cf56d450d5b1d6714300a6b13e135d1bd52 Mon Sep 17 00:00:00 2001 From: pythcoiner Date: Sat, 14 Mar 2026 21:05:28 -0400 Subject: [PATCH 2/2] jade: replace reqwest by ureq --- Cargo.lock | 741 ++++++++++++++++++++++++++---------------- Cargo.toml | 4 +- src/jade/mod.rs | 2 +- src/jade/pinserver.rs | 21 +- 4 files changed, 466 insertions(+), 302 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e3de6a..3f1db76 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aead" version = "0.5.2" @@ -144,7 +150,6 @@ dependencies = [ "ledger-transport-hidapi", "ledger_bitcoin_client", "regex", - "reqwest", "serde", "serde_bytes", "serde_cbor", @@ -152,6 +157,7 @@ dependencies = [ "tokio", "tokio-serial", "tracing", + "ureq", ] [[package]] @@ -216,6 +222,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.7.3" @@ -262,7 +274,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "788902099d47c8682efe6a7afb01c8d58b9794ba66c06affd81c3d6b560743eb" dependencies = [ "base58ck", - "base64", + "base64 0.21.7", "bech32", "bitcoin-internals 0.3.0", "bitcoin-io", @@ -504,13 +516,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] -name = "core-foundation" -version = "0.9.4" +name = "cookie" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" dependencies = [ - "core-foundation-sys", - "libc", + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9" +dependencies = [ + "cookie", + "document-features", + "idna 1.1.0", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "time", + "url", ] [[package]] @@ -528,6 +559,15 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + [[package]] name = "crossbeam" version = "0.8.4" @@ -651,6 +691,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", +] + [[package]] name = "digest" version = "0.10.7" @@ -663,12 +712,32 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "doc-comment" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + [[package]] name = "ecdsa" version = "0.16.9" @@ -708,15 +777,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - [[package]] name = "equivalent" version = "1.0.1" @@ -762,10 +822,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] -name = "fnv" -version = "1.0.7" +name = "flate2" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] [[package]] name = "form_urlencoded" @@ -908,25 +972,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "half" version = "1.8.3" @@ -935,9 +980,9 @@ checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "heck" @@ -1017,97 +1062,122 @@ dependencies = [ [[package]] name = "http" -version = "0.2.12" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] [[package]] -name = "http-body" -version = "0.4.6" +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "iana-time-zone" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ - "bytes", - "http", - "pin-project-lite", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "httparse" -version = "1.9.4" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] [[package]] -name = "httpdate" -version = "1.0.3" +name = "icu_collections" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] [[package]] -name = "hyper" -version = "0.14.29" +name = "icu_locale_core" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.7", - "tokio", - "tower-service", - "tracing", - "want", + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", ] [[package]] -name = "hyper-rustls" -version = "0.24.2" +name = "icu_normalizer" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "futures-util", - "http", - "hyper", - "rustls", - "tokio", - "tokio-rustls", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", ] [[package]] -name = "iana-time-zone" -version = "0.1.61" +name = "icu_normalizer_data" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", ] [[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" +name = "icu_properties_data" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ - "cc", + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", ] [[package]] @@ -1120,11 +1190,32 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + [[package]] name = "indexmap" -version = "2.5.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown", @@ -1149,12 +1240,6 @@ dependencies = [ "mach2", ] -[[package]] -name = "ipnet" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" - [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -1285,6 +1370,18 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + [[package]] name = "log" version = "0.4.22" @@ -1315,12 +1412,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "miniscript" version = "12.3.0" @@ -1331,6 +1422,16 @@ dependencies = [ "bitcoin", ] +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + [[package]] name = "mio" version = "0.8.11" @@ -1415,6 +1516,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.46" @@ -1522,6 +1629,21 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -1695,47 +1817,6 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-rustls", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-rustls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", - "winreg", -] - [[package]] name = "rfc6979" version = "0.4.0" @@ -1785,32 +1866,45 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.12" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "log", + "once_cell", "ring", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] [[package]] name = "rustls-pemfile" -version = "1.0.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.103.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" dependencies = [ "ring", + "rustls-pki-types", "untrusted", ] @@ -1826,16 +1920,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "sec1" version = "0.7.3" @@ -1927,18 +2011,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - [[package]] name = "serialport" version = "4.5.0" @@ -1984,6 +2056,12 @@ dependencies = [ "rand_core", ] +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + [[package]] name = "slab" version = "0.4.9" @@ -1993,6 +2071,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + [[package]] name = "snafu" version = "0.7.5" @@ -2025,16 +2109,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "spin" version = "0.9.8" @@ -2051,6 +2125,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + [[package]] name = "strsim" version = "0.11.1" @@ -2086,30 +2166,14 @@ dependencies = [ ] [[package]] -name = "sync_wrapper" -version = "0.1.2" +name = "synstructure" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] @@ -2145,6 +2209,47 @@ dependencies = [ "syn 2.0.77", ] +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -2173,7 +2278,7 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", - "socket2 0.4.10", + "socket2", "tokio-macros", "winapi", ] @@ -2189,16 +2294,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls", - "tokio", -] - [[package]] name = "tokio-serial" version = "5.4.4" @@ -2212,26 +2307,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-util" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e267c18a719545b481171952a79f8c25c80361463ba44bc7fa9eba7c742ef4f" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - [[package]] name = "tracing" version = "0.1.44" @@ -2263,12 +2338,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "typenum" version = "1.17.0" @@ -2321,6 +2390,40 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "ureq" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "217751151c53226090391713e533d9a5e904ba2570dabaaace29032687589c3e" +dependencies = [ + "base64 0.22.1", + "cc", + "cookie_store", + "flate2", + "log", + "percent-encoding", + "rustls", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "ureq-proto", + "utf-8", + "webpki-roots 0.26.11", +] + +[[package]] +name = "ureq-proto" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae239d0a3341aebc94259414d1dc67cfce87d41cbebc816772c91b77902fafa4" +dependencies = [ + "base64 0.22.1", + "http", + "httparse", + "log", +] + [[package]] name = "url" version = "2.5.2" @@ -2328,10 +2431,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", - "idna", + "idna 0.5.0", "percent-encoding", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -2344,15 +2459,6 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2385,18 +2491,6 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "wasm-bindgen-macro" version = "0.2.93" @@ -2427,20 +2521,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] -name = "web-sys" -version = "0.3.70" +name = "webpki-roots" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "js-sys", - "wasm-bindgen", + "webpki-roots 1.0.6", ] [[package]] name = "webpki-roots" -version = "0.25.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" +dependencies = [ + "rustls-pki-types", +] [[package]] name = "which" @@ -2634,14 +2730,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "winreg" -version = "0.50.0" +name = "writeable" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "x25519-dalek" @@ -2654,6 +2746,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -2675,6 +2790,27 @@ dependencies = [ "syn 2.0.77", ] +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "synstructure", +] + [[package]] name = "zeroize" version = "1.7.0" @@ -2694,3 +2830,36 @@ dependencies = [ "quote", "syn 2.0.77", ] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] diff --git a/Cargo.toml b/Cargo.toml index fd7cee8..6a7338c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ default = ["ledger", "specter", "coldcard", "bitbox", "jade", "service"] bitbox = ["tokio", "hidapi", "bitbox-api", "regex"] coldcard = ["dep:coldcard", "regex"] specter = ["tokio", "tokio-serial", "serialport"] -jade = ["tokio", "tokio-serial", "serde", "serde_bytes", "serde_cbor", "serialport", "reqwest"] +jade = ["tokio", "tokio-serial", "serde", "serde_bytes", "serde_cbor", "serialport", "ureq"] ledger = ["regex", "tokio", "ledger_bitcoin_client", "ledger-transport-hidapi", "ledger-apdu", "hidapi"] regex = ["dep:regex"] service = ["bitbox", "coldcard", "jade", "ledger", "specter", "tracing", "hex", "crossbeam"] @@ -41,7 +41,7 @@ serialport = { version = "4.3", optional = true } serde = { version = "1.0", features = ["derive"], optional = true } serde_bytes = { version = "0.11.14", optional = true } serde_cbor = { version = "0.11", optional = true } -reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"] , optional = true} +ureq = { version = "3", features = ["json"], optional = true } # bitbox bitbox-api = { version = "0.9.0", default-features = false, features = ["usb", "tokio", "multithreaded", "simulator"], optional = true } diff --git a/src/jade/mod.rs b/src/jade/mod.rs index 5fff569..78f60cb 100644 --- a/src/jade/mod.rs +++ b/src/jade/mod.rs @@ -134,7 +134,7 @@ impl Jade { if let api::AuthUserResponse::PinServerRequired { http_request } = res { let client = pinserver::PinServerClient::new(); - let pin_params: api::PinParams = client.request(http_request.params).await?; + let pin_params: api::PinParams = client.request(http_request.params)?; let handshake_completed: bool = self .transport .request("pin", Some(pin_params)) diff --git a/src/jade/pinserver.rs b/src/jade/pinserver.rs index a9a371f..851331b 100644 --- a/src/jade/pinserver.rs +++ b/src/jade/pinserver.rs @@ -1,7 +1,7 @@ use super::api; pub struct PinServerClient { - pub client: reqwest::Client, + pub client: ureq::Agent, } impl Default for PinServerClient { @@ -13,11 +13,11 @@ impl Default for PinServerClient { impl PinServerClient { pub fn new() -> Self { Self { - client: reqwest::Client::new(), + client: ureq::Agent::new_with_defaults(), } } - pub async fn request(&self, req: api::PinServerRequestParams) -> Result + pub fn request(&self, req: api::PinServerRequestParams) -> Result where D: serde::de::DeserializeOwned, { @@ -26,25 +26,20 @@ impl PinServerClient { api::PinServerUrls::Object { url, .. } => url, }; - let res = self.client.post(url).json(&req.data).send().await?; - - if res.status().is_success() { - res.json().await.map_err(Error::from) - } else { - Err(Error::Server(format!("{res:?}"))) - } + let mut res = self.client.post(url).send_json(&req.data)?; + res.body_mut().read_json().map_err(Error::from) } } #[derive(Debug)] pub enum Error { NoUrlProvided, - Client(reqwest::Error), + Client(ureq::Error), Server(String), } -impl From for Error { - fn from(e: reqwest::Error) -> Self { +impl From for Error { + fn from(e: ureq::Error) -> Self { Self::Client(e) } }