x
Some checks failed
CI / Typos (push) Successful in 17s
CI / Clippy (push) Successful in 1m11s
CI / Build and test (all features) (push) Has been cancelled
CI / Build and test (push) Has been cancelled

This commit is contained in:
2026-03-23 22:23:01 -07:00
parent 90c5584513
commit 6d35fb3626
3 changed files with 6 additions and 0 deletions

1
Cargo.lock generated
View File

@@ -2711,6 +2711,7 @@ dependencies = [
"reqwest",
"serde",
"thiserror",
"tracing",
]
[[package]]

View File

@@ -14,3 +14,4 @@ serde = { workspace = true }
thiserror = { workspace = true }
bytes = { workspace = true }
axum = { workspace = true }
tracing = { workspace = true }

View File

@@ -2,6 +2,7 @@ use axum::{
Router, body::Body as AxumBody, extract::State, response::Response as AxumResponse,
routing::any,
};
use tracing::{debug, warn};
use bytes::Bytes;
use futures_core::Stream;
use reqwest::{Client, StatusCode, header};
@@ -262,6 +263,7 @@ async fn proxy_handler(
let method = req.method().clone();
let url = format!("{}{}{}", state.base_url, path, query_str);
debug!(method = %method, url, "proxying request");
let mut req_builder = state.client.request(method, &url);
// Forward all request headers except hop-by-hop and Host.
@@ -286,6 +288,7 @@ async fn proxy_handler(
let upstream = match req_builder.send().await {
Ok(r) => r,
Err(e) => {
warn!(error = %e, "upstream request failed");
return AxumResponse::builder()
.status(StatusCode::BAD_GATEWAY.as_u16())
.body(AxumBody::from(e.to_string()))
@@ -294,6 +297,7 @@ async fn proxy_handler(
};
let status = upstream.status().as_u16();
debug!(status, "upstream response");
let resp_headers = upstream.headers().clone();
let mut builder = AxumResponse::builder().status(status);