Skip to content

Commit d281330

Browse files
authored
Update to http 1.0 (#35)
Updates to [http 1](https://docs.rs/http/1.1.0).
1 parent bab2f83 commit d281330

2 files changed

Lines changed: 21 additions & 3 deletions

File tree

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ publish = ["wafflehacks"]
1414
async-graphql = { version = "7", default-features = false, optional = true }
1515
async-trait = { version = "0.1", optional = true }
1616
eyre = "0.6"
17-
http = { version = "0.2", optional = true }
17+
http = { version = "1", optional = true }
1818
opentelemetry = { version = "0.22", features = ["trace"], optional = true }
1919
opentelemetry-http = { version = "0.11", optional = true }
2020
opentelemetry-otlp = { version = "0.15", default-features = false, features = ["grpc-tonic", "http-proto", "reqwest-client", "reqwest-rustls", "tls", "tls-roots", "trace"], optional = true }
2121
opentelemetry_sdk = { version = "0.22", features = ["rt-tokio"], optional = true }
2222
tower = { version = "0.4", default-features = false, optional = true }
23-
tower-http = { version = "0.4", default-features = false, features = ["trace"], optional = true }
23+
tower-http = { version = "0.5", default-features = false, features = ["trace"], optional = true }
2424
tracing = "0.1"
2525
tracing-error = "0.2"
2626
tracing-opentelemetry = { version = "0.23", default-features = false, features = ["tracing-log"], optional = true }

src/http.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ impl<B> trace::MakeSpan<B> for MakeSpan {
3939
#[cfg(feature = "opentelemetry")]
4040
{
4141
use opentelemetry::propagation::TextMapPropagator;
42-
use opentelemetry_http::HeaderExtractor;
4342
use opentelemetry_sdk::propagation::{BaggagePropagator, TraceContextPropagator};
4443
use tracing_opentelemetry::OpenTelemetrySpanExt;
4544

@@ -130,3 +129,22 @@ fn record_headers(direction: &'static str, headers: &HeaderMap, span: &Span) {
130129
span.record(format!("http.{direction}.header.{header}").as_str(), value);
131130
}
132131
}
132+
133+
/// Re-implementation of [`opentelemetry_http::HeaderExtractor`] pending
134+
/// <https://github.com/open-telemetry/opentelemetry-rust/issues/1427>
135+
#[cfg(feature = "opentelemetry")]
136+
struct HeaderExtractor<'a>(pub &'a HeaderMap);
137+
138+
#[cfg(feature = "opentelemetry")]
139+
impl<'a> opentelemetry::propagation::Extractor for HeaderExtractor<'a> {
140+
fn get(&self, key: &str) -> Option<&str> {
141+
self.0.get(key).and_then(|value| value.to_str().ok())
142+
}
143+
144+
fn keys(&self) -> Vec<&str> {
145+
self.0
146+
.keys()
147+
.map(|value| value.as_str())
148+
.collect::<Vec<_>>()
149+
}
150+
}

0 commit comments

Comments
 (0)