From f6fd6619e708a515831f707438368d81b0c9aa56 Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Fri, 12 Jul 2024 15:51:37 -0700 Subject: refactor(fetch): reimplement fetch with hyper instead of reqwest (#24237) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit re-implements `ext/fetch` and all dependent crates using `hyper` and `hyper-util`, instead of `reqwest`. The reasoning is that we want to have greater control and access to low level `hyper` APIs when implementing `fetch` API as well as `node:http` module. --------- Co-authored-by: Bartek IwaƄczuk --- runtime/errors.rs | 47 ++++++++++++++++++----------------------------- 1 file changed, 18 insertions(+), 29 deletions(-) (limited to 'runtime/errors.rs') diff --git a/runtime/errors.rs b/runtime/errors.rs index 7f2e49250..694402773 100644 --- a/runtime/errors.rs +++ b/runtime/errors.rs @@ -13,7 +13,6 @@ use deno_core::error::AnyError; use deno_core::serde_json; use deno_core::url; use deno_core::ModuleResolutionError; -use deno_fetch::reqwest; use std::env; use std::error::Error; use std::io; @@ -101,27 +100,6 @@ fn get_regex_error_class(error: ®ex::Error) -> &'static str { } } -fn get_request_error_class(error: &reqwest::Error) -> &'static str { - error - .source() - .and_then(|inner_err| { - (inner_err - .downcast_ref::() - .map(get_io_error_class)) - .or_else(|| { - inner_err - .downcast_ref::() - .map(get_serde_json_error_class) - }) - .or_else(|| { - inner_err - .downcast_ref::() - .map(get_url_parse_error_class) - }) - }) - .unwrap_or("Http") -} - fn get_serde_json_error_class( error: &serde_json::error::Error, ) -> &'static str { @@ -142,7 +120,17 @@ fn get_url_parse_error_class(_error: &url::ParseError) -> &'static str { "URIError" } -fn get_hyper_error_class(_error: &hyper_v014::Error) -> &'static str { +fn get_hyper_error_class(_error: &hyper::Error) -> &'static str { + "Http" +} + +fn get_hyper_util_error_class( + _error: &hyper_util::client::legacy::Error, +) -> &'static str { + "Http" +} + +fn get_hyper_v014_error_class(_error: &hyper_v014::Error) -> &'static str { "Http" } @@ -175,13 +163,18 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> { e.downcast_ref::() .map(get_dlopen_error_class) }) + .or_else(|| e.downcast_ref::().map(get_hyper_error_class)) + .or_else(|| { + e.downcast_ref::() + .map(get_hyper_util_error_class) + }) .or_else(|| { e.downcast_ref::() - .map(get_hyper_error_class) + .map(get_hyper_v014_error_class) }) .or_else(|| { e.downcast_ref::>() - .map(|e| get_hyper_error_class(e)) + .map(|e| get_hyper_v014_error_class(e)) }) .or_else(|| { e.downcast_ref::().map(|e| { @@ -202,10 +195,6 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> { e.downcast_ref::() .map(get_notify_error_class) }) - .or_else(|| { - e.downcast_ref::() - .map(get_request_error_class) - }) .or_else(|| e.downcast_ref::().map(get_regex_error_class)) .or_else(|| { e.downcast_ref::() -- cgit v1.2.3