From 1de0816661fbc6e4e9ef573aad8b246f1fa40c2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 27 Mar 2021 23:05:55 +0000 Subject: [PATCH 1/2] Bump ureq from 1.5.2 to 2.1.0 Bumps [ureq](https://github.com/algesten/ureq) from 1.5.2 to 2.1.0. - [Release notes](https://github.com/algesten/ureq/releases) - [Changelog](https://github.com/algesten/ureq/blob/main/CHANGELOG.md) - [Commits](https://github.com/algesten/ureq/commits/2.1.0) Signed-off-by: dependabot[bot] --- Cargo.lock | 78 ++++++----------------------------------- taskchampion/Cargo.toml | 2 +- 2 files changed, 12 insertions(+), 68 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d8f5ae2a7..e4fe07f8b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -47,7 +47,7 @@ dependencies = [ "actix-service", "actix-threadpool", "actix-utils", - "base64 0.13.0", + "base64", "bitflags", "brotli2", "bytes", @@ -369,7 +369,7 @@ dependencies = [ "actix-http", "actix-rt", "actix-service", - "base64 0.13.0", + "base64", "bytes", "cfg-if 1.0.0", "derive_more", @@ -403,12 +403,6 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - [[package]] name = "base64" version = "0.13.0" @@ -633,22 +627,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "cookie_store" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3818dfca4b0cb5211a659bbcbb94225b7127407b2b135e650d717bfb78ab10d3" -dependencies = [ - "cookie", - "idna", - "log", - "publicsuffix", - "serde", - "serde_json", - "time 0.2.23", - "url", -] - [[package]] name = "copyless" version = "0.1.5" @@ -818,15 +796,6 @@ dependencies = [ "termcolor", ] -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "version_check", -] - [[package]] name = "flate2" version = "1.0.19" @@ -1632,28 +1601,6 @@ version = "2.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da78e04bc0e40f36df43ecc6575e4f4b180e8156c4efd73f13d5619479b05696" -[[package]] -name = "publicsuffix" -version = "1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b" -dependencies = [ - "error-chain", - "idna", - "lazy_static", - "regex", - "url", -] - -[[package]] -name = "qstring" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" -dependencies = [ - "percent-encoding", -] - [[package]] name = "quick-error" version = "1.2.3" @@ -1949,7 +1896,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" dependencies = [ - "base64 0.13.0", + "base64", "blake2b_simd", "constant_time_eq", "crossbeam-utils", @@ -1972,11 +1919,11 @@ dependencies = [ [[package]] name = "rustls" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" +checksum = "064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980b" dependencies = [ - "base64 0.12.3", + "base64", "log", "ring", "sct", @@ -2633,17 +2580,14 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "ureq" -version = "1.5.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a599426c7388ab189dfd0eeb84c8d879490abc73e3e62a0b6a40e286f6427ab7" +checksum = "6fbeb1aabb07378cf0e084971a74f24241273304653184f54cdce113c0d7df1b" dependencies = [ - "base64 0.13.0", + "base64", "chunked_transfer", - "cookie", - "cookie_store", "log", "once_cell", - "qstring", "rustls", "url", "webpki", @@ -2781,9 +2725,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f20dea7535251981a9670857150d571846545088359b28e4951d350bdaf179f" +checksum = "82015b7e0b8bad8185994674a13a93306bea76cf5a16c5a181382fd3a5ec2376" dependencies = [ "webpki", ] diff --git a/taskchampion/Cargo.toml b/taskchampion/Cargo.toml index 06751f337..a8d3d2a3f 100644 --- a/taskchampion/Cargo.toml +++ b/taskchampion/Cargo.toml @@ -19,7 +19,7 @@ anyhow = "1.0" thiserror = "1.0" kv = {version = "^0.10.0", features = ["msgpack-value"]} lmdb-rkv = {version = "^0.12.3"} -ureq = "^1.5.2" +ureq = "^2.1.0" log = "^0.4.14" tindercrypt = { version = "^0.2.2", default-features = false } From 0f02b38fd8f3e452c5e3e13d72f4c1e691a0c35f Mon Sep 17 00:00:00 2001 From: "Dustin J. Mitchell" Date: Sun, 28 Mar 2021 17:40:39 -0400 Subject: [PATCH 2/2] Modify ureq usage for new version --- taskchampion/src/server/remote/mod.rs | 81 ++++++++++++--------------- 1 file changed, 37 insertions(+), 44 deletions(-) diff --git a/taskchampion/src/server/remote/mod.rs b/taskchampion/src/server/remote/mod.rs index 29ee216f1..8916c7a80 100644 --- a/taskchampion/src/server/remote/mod.rs +++ b/taskchampion/src/server/remote/mod.rs @@ -1,5 +1,6 @@ use crate::server::{AddVersionResult, GetVersionResult, HistorySegment, Server, VersionId}; use std::convert::TryInto; +use std::time::Duration; use uuid::Uuid; mod crypto; @@ -24,21 +25,14 @@ impl RemoteServer { origin, client_key, encryption_secret: encryption_secret.into(), - agent: ureq::agent(), + agent: ureq::AgentBuilder::new() + .timeout_connect(Duration::from_secs(10)) + .timeout_read(Duration::from_secs(60)) + .build(), } } } -/// Convert a ureq::Response to an Error -fn resp_to_error(resp: ureq::Response) -> anyhow::Error { - return anyhow::anyhow!( - "error {}: {}", - resp.status(), - resp.into_string() - .unwrap_or_else(|e| format!("(could not read response: {})", e)) - ); -} - /// Read a UUID-bearing header or fail trying fn get_uuid_header(resp: &ureq::Response, name: &str) -> anyhow::Result { let value = resp @@ -61,25 +55,25 @@ impl Server for RemoteServer { history_segment, }; let history_ciphertext = history_cleartext.seal(&self.encryption_secret)?; - let resp = self + match self .agent .post(&url) - .timeout_connect(10_000) - .timeout_read(60_000) .set( "Content-Type", "application/vnd.taskchampion.history-segment", ) .set("X-Client-Key", &self.client_key.to_string()) - .send_bytes(history_ciphertext.as_ref()); - if resp.ok() { - let version_id = get_uuid_header(&resp, "X-Version-Id")?; - Ok(AddVersionResult::Ok(version_id)) - } else if resp.status() == 409 { - let parent_version_id = get_uuid_header(&resp, "X-Parent-Version-Id")?; - Ok(AddVersionResult::ExpectedParentVersion(parent_version_id)) - } else { - Err(resp_to_error(resp)) + .send_bytes(history_ciphertext.as_ref()) + { + Ok(resp) => { + let version_id = get_uuid_header(&resp, "X-Version-Id")?; + Ok(AddVersionResult::Ok(version_id)) + } + Err(ureq::Error::Status(status, resp)) if status == 409 => { + let parent_version_id = get_uuid_header(&resp, "X-Parent-Version-Id")?; + Ok(AddVersionResult::ExpectedParentVersion(parent_version_id)) + } + Err(err) => Err(err.into()), } } @@ -91,30 +85,29 @@ impl Server for RemoteServer { "{}/client/get-child-version/{}", self.origin, parent_version_id ); - let resp = self + match self .agent .get(&url) - .timeout_connect(10_000) - .timeout_read(60_000) .set("X-Client-Key", &self.client_key.to_string()) - .call(); - - if resp.ok() { - let parent_version_id = get_uuid_header(&resp, "X-Parent-Version-Id")?; - let version_id = get_uuid_header(&resp, "X-Version-Id")?; - let history_ciphertext: HistoryCiphertext = resp.try_into()?; - let history_segment = history_ciphertext - .open(&self.encryption_secret, parent_version_id)? - .history_segment; - Ok(GetVersionResult::Version { - version_id, - parent_version_id, - history_segment, - }) - } else if resp.status() == 404 { - Ok(GetVersionResult::NoSuchVersion) - } else { - Err(resp_to_error(resp)) + .call() + { + Ok(resp) => { + let parent_version_id = get_uuid_header(&resp, "X-Parent-Version-Id")?; + let version_id = get_uuid_header(&resp, "X-Version-Id")?; + let history_ciphertext: HistoryCiphertext = resp.try_into()?; + let history_segment = history_ciphertext + .open(&self.encryption_secret, parent_version_id)? + .history_segment; + Ok(GetVersionResult::Version { + version_id, + parent_version_id, + history_segment, + }) + } + Err(ureq::Error::Status(status, _)) if status == 404 => { + Ok(GetVersionResult::NoSuchVersion) + } + Err(err) => Err(err.into()), } } }