diff --git a/Cargo.toml b/Cargo.toml index dd9e8360..ab41f5ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,7 +61,7 @@ bytesize = "1.2.0" cap = { version = "0.1.2", features = ["stats"] } is_ci = "1.1.1" tempfile = "3.5.0" -ureq = { version = "2.8.0", features = ["http-crate"] } +ureq = "3.0" reqwest = { version = "0.12", features = ["blocking", "gzip"] } serial_test = "3.1.1" parking_lot = "0.12.1" diff --git a/examples/list_recent_versions.rs b/examples/list_recent_versions.rs index 6160640d..82a8da35 100644 --- a/examples/list_recent_versions.rs +++ b/examples/list_recent_versions.rs @@ -77,16 +77,15 @@ fn names(name: &str) -> Result, Box> { /// Create a request to the sparse `index` and parse the response with the side-effect of yielding /// the desired crate and updating the local cache. fn update_cache(name: &str, index: &SparseIndex) -> Result, Box> { - let request: ureq::Request = index.make_cache_request(name)?.try_into()?; + let request = index + .make_cache_request(name)? + .version(ureq::http::Version::HTTP_11) + .body(())?; - let response: http::Response = match request.call() { - Ok(response) => response.into(), - Err(_) => return Ok(None), - }; - - let (parts, body) = response.into_parts(); - let response = http::Response::from_parts(parts, body.into_bytes()); + let response = ureq::run(request)?; + let (parts, mut body) = response.into_parts(); + let response = http::Response::from_parts(parts, body.read_to_vec()?); Ok(index.parse_cache_response(name, response, true)?) } diff --git a/examples/sparse_http_ureq.rs b/examples/sparse_http_ureq.rs index 4b601834..237a4325 100644 --- a/examples/sparse_http_ureq.rs +++ b/examples/sparse_http_ureq.rs @@ -1,9 +1,5 @@ use crates_index::SparseIndex; -use std::io; -/// -/// **important**:
-/// dont forget to enable the **http-interop** feature of **ureq** /// /// command to run:
/// cargo run --example sparse_http_ureq -F sparse @@ -31,12 +27,17 @@ fn print_crate(index: &mut SparseIndex) { } fn update(index: &mut SparseIndex) { - let request: ureq::Request = index.make_cache_request(CRATE_TO_FETCH).unwrap().try_into().unwrap(); - - let response = request - .call() - .map_err(|_e| io::Error::new(io::ErrorKind::InvalidInput, "connection error")) + // ureq doesn't support HTTP/2, so we have to set the version to HTTP/1.1 + let request = index + .make_cache_request(CRATE_TO_FETCH) + .unwrap() + .version(ureq::http::Version::HTTP_11) + .body(()) .unwrap(); - index.parse_cache_response(CRATE_TO_FETCH, response.into(), true).unwrap(); + let response = ureq::run(request).unwrap(); + + let (parts, mut body) = response.into_parts(); + let response = http::Response::from_parts(parts, body.read_to_vec().unwrap()); + index.parse_cache_response(CRATE_TO_FETCH, response, true).unwrap(); }