Skip to content

Commit

Permalink
Fix sentry-tower URL
Browse files Browse the repository at this point in the history
  • Loading branch information
pbzweihander committed May 3, 2022
1 parent 2243fa5 commit b6fae75
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
3 changes: 2 additions & 1 deletion sentry-tower/Cargo.toml
Expand Up @@ -12,14 +12,15 @@ Sentry integration for tower-based crates.
edition = "2018"

[features]
http = ["http_", "pin-project"]
http = ["http_", "pin-project", "url"]

[dependencies]
tower-layer = "0.3"
tower-service = "0.3"
http_ = { package = "http", version = "0.2.6", optional = true }
pin-project = { version = "1.0.10", optional = true }
sentry-core = { version = "0.25.0", path = "../sentry-core", default-features = false, features = ["client"] }
url = { version = "2.2.2", optional = true }

[dev-dependencies]
anyhow = "1"
Expand Down
14 changes: 12 additions & 2 deletions sentry-tower/src/http.rs
Expand Up @@ -2,7 +2,7 @@ use std::future::Future;
use std::pin::Pin;
use std::task::{Context, Poll};

use http_::{Request, Response, StatusCode};
use http_::{header, Request, Response, StatusCode};
use sentry_core::protocol;
use tower_layer::Layer;
use tower_service::Service;
Expand Down Expand Up @@ -136,7 +136,7 @@ where
fn call(&mut self, request: Request<ReqBody>) -> Self::Future {
let sentry_req = sentry_core::protocol::Request {
method: Some(request.method().to_string()),
url: request.uri().to_string().parse().ok(),
url: get_url_from_request(&request),
headers: request
.headers()
.into_iter()
Expand Down Expand Up @@ -186,3 +186,13 @@ fn map_status(status: StatusCode) -> protocol::SpanStatus {
_ => protocol::SpanStatus::UnknownError,
}
}

fn get_url_from_request<B>(request: &Request<B>) -> Option<url::Url> {
format!(
"http://{}{}",
request.headers().get(header::HOST)?.to_str().ok()?,
request.uri()
)
.parse()
.ok()
}

0 comments on commit b6fae75

Please sign in to comment.