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", "reqwest",
"serde", "serde",
"thiserror", "thiserror",
"tracing",
] ]
[[package]] [[package]]

View File

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