diff --git a/cdviz-collector/Cargo.toml b/cdviz-collector/Cargo.toml index c304d87..fdcf7a5 100644 --- a/cdviz-collector/Cargo.toml +++ b/cdviz-collector/Cargo.toml @@ -44,9 +44,9 @@ opendal = { version = "0.50", default-features = false, features = [ "services-fs", "services-s3", ], optional = true } -reqwest = { version = "0.12", default-features = false } -reqwest-middleware = { version = "0.3", features = ["json"] } -reqwest-tracing = "0.5" +reqwest = { version = "0.12", default-features = false, optional = true } +reqwest-middleware = { version = "0.3", features = ["json"], optional = true } +reqwest-tracing = { version = "0.5", optional = true } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_with = "3.10" @@ -77,15 +77,21 @@ tracing-subscriber = "0.3" [features] default = [ "sink_db", + "sink_http", "source_http", "source_opendal", - #reqwest is also used as transitive dependencies - "reqwest/charset", - "reqwest/http2", - "reqwest/json", - "reqwest/rustls-tls", ] sink_db = ["dep:sqlx"] +sink_http = [ + "dep:reqwest", + "dep:reqwest-middleware", + "dep:reqwest-tracing", + #reqwest is also used as transitive dependencies + "reqwest/charset", + "reqwest/http2", + "reqwest/json", + "reqwest/rustls-tls", +] source_http = ["dep:axum", "dep:axum-tracing-opentelemetry"] source_opendal = [ "dep:bytes", diff --git a/cdviz-collector/src/sinks/mod.rs b/cdviz-collector/src/sinks/mod.rs index 5ef539a..b195707 100644 --- a/cdviz-collector/src/sinks/mod.rs +++ b/cdviz-collector/src/sinks/mod.rs @@ -12,6 +12,7 @@ use tokio::task::JoinHandle; #[cfg(feature = "sink_db")] use db::DbSink; use debug::DebugSink; +#[cfg(feature = "sink_http")] use http::HttpSink; #[derive(Clone, Debug, Deserialize, Serialize)] @@ -22,6 +23,7 @@ pub(crate) enum Config { Db(db::Config), #[serde(alias = "debug")] Debug(debug::Config), + #[cfg(feature = "sink_http")] #[serde(alias = "http")] Http(http::Config), } @@ -37,6 +39,7 @@ impl Config { match self { Self::Db(db::Config { enabled, .. }) => *enabled, Self::Debug(debug::Config { enabled, .. }) => *enabled, + #[cfg(feature = "sink_http")] Self::Http(http::Config { enabled, .. }) => *enabled, } } @@ -50,6 +53,7 @@ impl TryFrom for SinkEnum { #[cfg(feature = "sink_db")] Config::Db(config) => DbSink::try_from(config)?.into(), Config::Debug(config) => DebugSink::try_from(config)?.into(), + #[cfg(feature = "sink_http")] Config::Http(config) => HttpSink::try_from(config)?.into(), }; Ok(out) @@ -62,6 +66,7 @@ enum SinkEnum { #[cfg(feature = "sink_db")] DbSink, DebugSink, + #[cfg(feature = "sink_http")] HttpSink, }