From 939681cd9338a0fbd3e302fbe4003ff64ae7100d Mon Sep 17 00:00:00 2001 From: Piotr Zaczkowski Date: Wed, 24 Jul 2024 15:53:52 +0200 Subject: [PATCH] WIP... --- reqwest-middleware/Cargo.toml | 1 - reqwest-retry/Cargo.toml | 10 ++++++++-- reqwest-retry/src/middleware.rs | 23 +++++++++++++++-------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/reqwest-middleware/Cargo.toml b/reqwest-middleware/Cargo.toml index e737723..0a6c618 100644 --- a/reqwest-middleware/Cargo.toml +++ b/reqwest-middleware/Cargo.toml @@ -15,7 +15,6 @@ multipart = ["reqwest/multipart"] json = ["reqwest/json"] charset = ["reqwest/charset"] http2 = ["reqwest/http2"] -rustls-tls = ["reqwest/rustls-tls"] [dependencies] anyhow = "1.0.0" diff --git a/reqwest-retry/Cargo.toml b/reqwest-retry/Cargo.toml index e4e90a4..41f51fd 100644 --- a/reqwest-retry/Cargo.toml +++ b/reqwest-retry/Cargo.toml @@ -9,20 +9,26 @@ license = "MIT OR Apache-2.0" keywords = ["reqwest", "http", "middleware", "retry"] categories = ["web-programming::http-client"] +[features] +default = ["tracing"] +log = ["dep:log"] +tracing = ["dep:tracing"] + [dependencies] reqwest-middleware = { version = "0.3.0", path = "../reqwest-middleware" } anyhow = "1.0.0" async-trait = "0.1.51" futures = "0.3.0" +log = { version = "0.4.22", optional = true } http = "1.0" reqwest = { version = "0.12.0", default-features = false } retry-policies = "0.4" -tracing = "0.1.26" +tracing = { version = "0.1.26", optional = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] hyper = "1.0" -tokio = { version = "1.6.0", features = ["time"] } +tokio = { version = "1.6.0", default-features = false, features = ["time"] } [target.'cfg(target_arch = "wasm32")'.dependencies] parking_lot = { version = "0.11.2", features = ["wasm-bindgen"] } # work around https://github.com/tomaka/wasm-timer/issues/14 diff --git a/reqwest-retry/src/middleware.rs b/reqwest-retry/src/middleware.rs index e4f01d1..a1613e4 100644 --- a/reqwest-retry/src/middleware.rs +++ b/reqwest-retry/src/middleware.rs @@ -9,17 +9,22 @@ use reqwest::{Request, Response}; use reqwest_middleware::{Error, Middleware, Next, Result}; use retry_policies::RetryPolicy; +#[cfg(feature = "tracing")] +type LogLevel = ::tracing::Level; +#[cfg(all(feature = "log", not(feature = "tracing")))] +type LogLevel = ::log::Level; + #[doc(hidden)] // We need this macro because tracing expects the level to be const: // https://github.com/tokio-rs/tracing/issues/2730 macro_rules! log_retry { ($level:expr, $($args:tt)*) => {{ match $level { - ::tracing::Level::TRACE => ::tracing::trace!($($args)*), - ::tracing::Level::DEBUG => ::tracing::debug!($($args)*), - ::tracing::Level::INFO => ::tracing::info!($($args)*), - ::tracing::Level::WARN => ::tracing::warn!($($args)*), - ::tracing::Level::ERROR => ::tracing::error!($($args)*), + LogLevel::TRACE => ::tracing::trace!($($args)*), + LogLevel::DEBUG => ::tracing::debug!($($args)*), + LogLevel::INFO => ::tracing::info!($($args)*), + LogLevel::WARN => ::tracing::warn!($($args)*), + LogLevel::ERROR => ::tracing::error!($($args)*), } }}; } @@ -69,7 +74,8 @@ pub struct RetryTransientMiddleware< > { retry_policy: T, retryable_strategy: R, - retry_log_level: tracing::Level, + #[cfg(any(feature = "log", feature = "tracing"))] + retry_log_level: LogLevel, } impl RetryTransientMiddleware { @@ -80,7 +86,8 @@ impl RetryTransientMiddleware Self { + #[cfg(any(feature = "log", feature = "tracing"))] + pub fn with_retry_log_level(mut self, level: LogLevel) -> Self { self.retry_log_level = level; self } @@ -96,7 +103,7 @@ where Self { retry_policy, retryable_strategy, - retry_log_level: tracing::Level::WARN, + retry_log_level: LogLevel::WARN, } } }