feat: allow search with --render-try-index (#88)

This commit is contained in:
sigoden 2022-07-02 23:25:57 +08:00 committed by GitHub
parent 1e0cdafbcf
commit 2ffdcdf106
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 3 deletions

View file

@ -155,9 +155,18 @@ impl Server {
match method {
Method::GET | Method::HEAD => {
if is_dir {
if render_try_index && query == "zip" {
if render_try_index {
if query == "zip" {
self.handle_zip_dir(path, head_only, &mut res).await?;
} else if render_index || render_spa || render_try_index {
} else if allow_search && query.starts_with("q=") {
let q = decode_uri(&query[2..]).unwrap_or_default();
self.handle_search_dir(path, &q, head_only, &mut res)
.await?;
} else {
self.handle_render_index(path, headers, head_only, &mut res)
.await?;
}
} else if render_index || render_spa {
self.handle_render_index(path, headers, head_only, &mut res)
.await?;
} else if query == "zip" {

View file

@ -50,6 +50,18 @@ fn render_try_index3(#[with(&["--render-try-index"])] server: TestServer) -> Res
Ok(())
}
#[rstest]
#[case(server(&["--render-try-index"] as &[&str]), false)]
#[case(server(&["--render-try-index", "--allow-search"] as &[&str]), true)]
fn render_try_index4(#[case] server: TestServer, #[case] searched: bool) -> Result<(), Error> {
let resp = reqwest::blocking::get(format!("{}{}?q={}", server.url(), DIR_NO_INDEX, "😀.bin"))?;
assert_eq!(resp.status(), 200);
let paths = utils::retrive_index_paths(&resp.text()?);
assert!(!paths.is_empty());
assert_eq!(paths.iter().all(|v| v.contains("😀.bin")), searched);
Ok(())
}
#[rstest]
fn render_spa(#[with(&["--render-spa"])] server: TestServer) -> Result<(), Error> {
let resp = reqwest::blocking::get(server.url())?;