From 63bf60d1c215f506bb1cec6df5e360fbfe450eee Mon Sep 17 00:00:00 2001 From: Jose Quintana Date: Thu, 7 Jan 2021 03:31:16 +0100 Subject: [PATCH] feat: head http responses support --- Cargo.lock | 3 +-- Cargo.toml | 2 +- src/bin/server.rs | 18 ++++++++++++------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 53c8e39..a4fb8f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1692,8 +1692,7 @@ dependencies = [ [[package]] name = "warp" version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f41be6df54c97904af01aa23e613d4521eed7ab23537cede692d4058f6449407" +source = "git+https://github.com/joseluisq/warp.git?branch=0.2.x#1865f785faf9bde73f0dc2b1b0778c42aee829b9" dependencies = [ "async-compression", "bytes", diff --git a/Cargo.toml b/Cargo.toml index b1d206a..a8cf4a8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ include = ["src/**/*", "Cargo.toml", "Cargo.lock"] [dependencies] tokio = { version = "0.2", features = ["full"] } -warp = { version = "0.2", features = ["compression"] } +warp = { git = "https://github.com/joseluisq/warp.git", branch = "0.2.x", features = ["compression"] } anyhow = "1.0" tracing = "0.1" tracing-subscriber = "0.2" diff --git a/src/bin/server.rs b/src/bin/server.rs index 6254d82..616b326 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -16,16 +16,22 @@ use self::static_web_server::core::*; async fn server(opts: config::Options) -> Result { logger::init(&opts.log_level)?; - let filters = warp::get() - .and(warp::fs::dir(opts.root)) - .with(warp::compression::gzip()) - .recover(rejection::handle_rejection) - .with(warp::trace::request()); + let public_head = warp::head().and(warp::fs::dir(opts.root.clone())); + let public_get = warp::get().and(warp::fs::dir(opts.root)); + + let routes = public_head.or(public_get.with(warp::compression::gzip())); let host = opts.host.parse::()?; let port = opts.port; - tokio::task::spawn(warp::serve(filters).run((host, port))); + tokio::task::spawn( + warp::serve( + routes + .with(warp::trace::request()) + .recover(rejection::handle_rejection), + ) + .run((host, port)), + ); signals::wait(|sig: signals::Signal| { let code = signals::as_int(sig); -- libgit2 1.7.2