From 73b903b17cf46c1a06e193428fc6ff2e7e44d961 Mon Sep 17 00:00:00 2001 From: "John T. Wodder II" Date: Thu, 8 Aug 2024 08:54:27 -0400 Subject: [PATCH] Test getting the complete request URL --- Cargo.toml | 2 +- src/main.rs | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 69dcf8b..d8a7858 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ aws-sdk-s3 = "1.42.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.13", 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 f20bf36..a8afc71 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,9 +16,9 @@ use crate::zarrman::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,6 +28,7 @@ use axum::{ }; use clap::Parser; use std::fmt; +use std::fmt::Write; use std::io::{stderr, IsTerminal}; use std::net::IpAddr; use std::sync::Arc; @@ -113,6 +114,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| {