diff --git a/Cargo.toml b/Cargo.toml index be33bf0..dc40e9f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ aws-sdk-s3 = "1.43.0" aws-smithy-async = "1.2.1" aws-smithy-runtime-api = "1.7.1" aws-smithy-types-convert = { version = "0.60.8", features = ["convert-time"] } -axum = { version = "0.7.5", default-features = false, features = ["http1", "tokio", "tower-log"] } +axum = { version = "0.7.5", default-features = false, features = ["http1", "original-uri", "tokio", "tower-log"] } bytes = "1.7.1" clap = { version = "4.5.16", default-features = false, features = ["derive", "error-context", "help", "std", "suggestions", "usage", "wrap_help"] } enum_dispatch = "0.3.13" diff --git a/src/main.rs b/src/main.rs index f78d257..89d08aa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,9 +17,9 @@ use crate::zarrman::{ManifestFetcher, ZarrManClient}; use anyhow::Context; use axum::{ body::Body, - extract::Request, + extract::{Host, OriginalUri, Request}, http::{ - header::{HeaderValue, ACCESS_CONTROL_ALLOW_ORIGIN, CONTENT_TYPE, SERVER}, + header::{HeaderMap, HeaderValue, ACCESS_CONTROL_ALLOW_ORIGIN, CONTENT_TYPE, SERVER}, response::Response, Method, }, @@ -28,7 +28,7 @@ use axum::{ Router, }; use clap::Parser; -use std::fmt; +use std::fmt::{self, Write}; use std::net::IpAddr; use std::sync::Arc; use tower::service_fn; @@ -120,6 +120,22 @@ async fn run() -> anyhow::Result<()> { ([(CONTENT_TYPE, CSS_CONTENT_TYPE)], STYLESHEET) }), ) + .route( + "/.test", + get( + |host: Host, orig: OriginalUri, headers: HeaderMap, req: Request| async move { + let mut s = String::new(); + writeln!(&mut s, "Host: {}", host.0).unwrap(); + writeln!(&mut s, "Original URI: {}", orig.0).unwrap(); + writeln!(&mut s, "Request URI: {}", req.uri()).unwrap(); + writeln!(&mut s, "Headers:").unwrap(); + for (name, value) in &headers { + writeln!(&mut s, " {name}: {value:?}").unwrap(); + } + s + }, + ), + ) .nest_service( "/", service_fn(move |req: Request| {