Skip to content
This repository was archived by the owner on Sep 10, 2024. It is now read-only.

Commit 925f85c

Browse files
committed
Upgrade headers and adapt mas-tower tracer context utils
1 parent a7a9369 commit 925f85c

File tree

3 files changed

+23
-33
lines changed

3 files changed

+23
-33
lines changed

Cargo.lock

Lines changed: 7 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ features = ["env", "yaml", "test"]
9999

100100
# HTTP headers
101101
[workspace.dependencies.headers]
102-
version = "0.3.9"
102+
version = "0.4.0"
103103

104104
# HTTP request/response
105105
[workspace.dependencies.http]

crates/tower/src/trace_context.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,25 @@
1414

1515
use http::Request;
1616
use opentelemetry::propagation::Injector;
17-
use opentelemetry_http::HeaderInjector;
1817
use tower::{Layer, Service};
1918
use tracing::Span;
2019
use tracing_opentelemetry::OpenTelemetrySpanExt;
2120

21+
/// Same as the one in opentelemetry-http, but updated for the http@1 upgrade
22+
pub struct HeaderInjector<'a>(pub &'a mut http::HeaderMap);
23+
24+
impl<'a> Injector for HeaderInjector<'a> {
25+
/// Set a key and value in the [`HeaderMap`]. Does nothing if the key or
26+
/// value are not valid inputs.
27+
fn set(&mut self, key: &str, value: String) {
28+
if let Ok(name) = http::header::HeaderName::from_bytes(key.as_bytes()) {
29+
if let Ok(val) = http::header::HeaderValue::from_str(&value) {
30+
self.0.insert(name, val);
31+
}
32+
}
33+
}
34+
}
35+
2236
/// A trait to get an [`Injector`] from a request.
2337
trait AsInjector {
2438
type Injector<'a>: Injector

0 commit comments

Comments
 (0)