fix: a few things that broke with axum versioning

This commit is contained in:
Jeremy Wall 2025-04-15 21:58:57 -04:00
parent ade221003e
commit 47f0ef2575
4 changed files with 87 additions and 14 deletions

84
Cargo.lock generated
View File

@ -41,8 +41,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"axum-core", "axum-core 0.4.5",
"axum-macros", "axum-macros 0.4.2",
"base64", "base64",
"bytes", "bytes",
"futures-util", "futures-util",
@ -52,7 +52,7 @@ dependencies = [
"hyper", "hyper",
"hyper-util", "hyper-util",
"itoa", "itoa",
"matchit", "matchit 0.7.3",
"memchr", "memchr",
"mime", "mime",
"percent-encoding", "percent-encoding",
@ -72,6 +72,41 @@ dependencies = [
"tracing", "tracing",
] ]
[[package]]
name = "axum"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288"
dependencies = [
"axum-core 0.5.2",
"axum-macros 0.5.0",
"bytes",
"form_urlencoded",
"futures-util",
"http",
"http-body",
"http-body-util",
"hyper",
"hyper-util",
"itoa",
"matchit 0.8.4",
"memchr",
"mime",
"percent-encoding",
"pin-project-lite",
"rustversion",
"serde",
"serde_json",
"serde_path_to_error",
"serde_urlencoded",
"sync_wrapper",
"tokio",
"tower",
"tower-layer",
"tower-service",
"tracing",
]
[[package]] [[package]]
name = "axum-core" name = "axum-core"
version = "0.4.5" version = "0.4.5"
@ -93,6 +128,26 @@ dependencies = [
"tracing", "tracing",
] ]
[[package]]
name = "axum-core"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6"
dependencies = [
"bytes",
"futures-core",
"http",
"http-body",
"http-body-util",
"mime",
"pin-project-lite",
"rustversion",
"sync_wrapper",
"tower-layer",
"tower-service",
"tracing",
]
[[package]] [[package]]
name = "axum-macros" name = "axum-macros"
version = "0.4.2" version = "0.4.2"
@ -104,13 +159,24 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "axum-macros"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "axum-typed-websockets" name = "axum-typed-websockets"
version = "0.6.0" version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df537817c0dc8ddccc7a4d479ea5d23438baf6f7ea97c583ac2256a75ff742fd" checksum = "df537817c0dc8ddccc7a4d479ea5d23438baf6f7ea97c583ac2256a75ff742fd"
dependencies = [ dependencies = [
"axum", "axum 0.7.9",
"futures-util", "futures-util",
"serde", "serde",
"serde_json", "serde_json",
@ -415,6 +481,12 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
[[package]]
name = "matchit"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
[[package]] [[package]]
name = "memchr" name = "memchr"
version = "2.7.4" version = "2.7.4"
@ -460,7 +532,7 @@ dependencies = [
name = "offline-web-http" name = "offline-web-http"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"axum", "axum 0.8.3",
"blake2", "blake2",
"offline-web-model", "offline-web-model",
"rand 0.9.0", "rand 0.9.0",
@ -479,7 +551,7 @@ dependencies = [
name = "offline-web-ws" name = "offline-web-ws"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"axum", "axum 0.7.9",
"axum-typed-websockets", "axum-typed-websockets",
"blake2", "blake2",
"offline-web-model", "offline-web-model",

View File

@ -8,7 +8,7 @@ name = "exp1"
path = "src/main.rs" path = "src/main.rs"
[dependencies] [dependencies]
axum = { version = "0.7.4", features = ["macros"] } axum = { version = "0.8.0", features = ["macros"] }
blake2 = "0.10.6" blake2 = "0.10.6"
rand = "0.9.0" rand = "0.9.0"
serde = { version = "1.0.219", features = ["derive", "rc"] } serde = { version = "1.0.219", features = ["derive", "rc"] }

View File

@ -86,9 +86,9 @@ async fn ref_path(refs: Arc<HashMap<String, Arc<Reference>>>, Path(path): Path<S
} }
} }
async fn object_path(objects: Arc<HashMap<String, AddressableObject>>, Path(path): Path<String>) -> String { async fn object_path(objects: Arc<HashMap<String, AddressableObject>>, Path(addr): Path<String>) -> String {
dbg!(&path); dbg!(&addr);
match objects.get(&path) { match objects.get(&addr) {
Some(o) => o.content.clone(), Some(o) => o.content.clone(),
None => todo!("Return a 404?"), None => todo!("Return a 404?"),
} }
@ -120,8 +120,8 @@ pub fn endpoints(root_ref: Arc<Reference>, refs: Arc<HashMap<String, Arc<Referen
Router::new() Router::new()
.route("/{addr}", get({ .route("/{addr}", get({
let objects = objects.clone(); let objects = objects.clone();
move |path| object_path(objects, path) move |addr| object_path(objects, addr)
})) }))
), ),
) )
.route("/lib/client.js", get(get_client_js)) .route("/lib/client.js", get(get_client_js))
@ -135,5 +135,6 @@ pub async fn serve() {
let listener = tokio::net::TcpListener::bind("127.0.0.1:3000") let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await .await
.unwrap(); .unwrap();
println!("Server ui starting on http://127.0.0.1:3000/ui/");
axum::serve(listener, endpoints(root_ref, refs, objects)).await.unwrap(); axum::serve(listener, endpoints(root_ref, refs, objects)).await.unwrap();
} }

View File

@ -206,11 +206,11 @@ pub fn endpoints(
pub async fn serve() { pub async fn serve() {
// run our app with hyper, listening globally on port 3000 // run our app with hyper, listening globally on port 3000
let (root_ref, refs, objects) = random_references_and_objects(); let (root_ref, refs, objects) = random_references_and_objects();
println!("Server ui starting on http://127.0.0.1:3000/ui/");
println!("WebSocket endpoint available at ws://127.0.0.1:3000/api/v1/ws");
let listener = tokio::net::TcpListener::bind("127.0.0.1:3000") let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await .await
.unwrap(); .unwrap();
println!("Server ui starting on http://127.0.0.1:3000/ui/");
println!("WebSocket endpoint available at ws://127.0.0.1:3000/api/v1/ws");
axum::serve(listener, endpoints(root_ref, refs, objects)) axum::serve(listener, endpoints(root_ref, refs, objects))
.await .await
.unwrap(); .unwrap();