]> OzVa Git service - ozva-cloud/commitdiff
fix: decodeURI searching string (#61)
authorsigoden <sigoden@gmail.com>
Mon, 20 Jun 2022 13:51:41 +0000 (21:51 +0800)
committerGitHub <noreply@github.com>
Mon, 20 Jun 2022 13:51:41 +0000 (21:51 +0800)
src/server.rs
tests/http.rs

index 4620b79173815a67278f62626aad529d036371f5..a2d3d2f23f52ac7a685c12ab737d72079f6544e7 100644 (file)
@@ -153,7 +153,8 @@ impl Server {
                     } else if query == "zip" {
                         self.handle_zip_dir(path, head_only, &mut res).await?;
                     } else if let Some(q) = query.strip_prefix("q=") {
-                        self.handle_query_dir(path, q, head_only, &mut res).await?;
+                        let q = decode_uri(q).unwrap_or_default();
+                        self.handle_query_dir(path, &q, head_only, &mut res).await?;
                     } else {
                         self.handle_ls_dir(path, true, head_only, &mut res).await?;
                     }
index 9cf76772fecf92192359ca6d21cb51ed3e513427..0e5a430e2ed8cd12663ec8fb697b3d75d34d7512 100644 (file)
@@ -74,6 +74,18 @@ fn get_dir_search(server: TestServer) -> Result<(), Error> {
     Ok(())
 }
 
+#[rstest]
+fn get_dir_search2(server: TestServer) -> Result<(), Error> {
+    let resp = reqwest::blocking::get(format!("{}?q={}", server.url(), "😀.data"))?;
+    assert_eq!(resp.status(), 200);
+    let paths = utils::retrive_index_paths(&resp.text()?);
+    assert!(!paths.is_empty());
+    for p in paths {
+        assert!(p.contains(&"😀.data"));
+    }
+    Ok(())
+}
+
 #[rstest]
 fn head_dir_search(server: TestServer) -> Result<(), Error> {
     let resp = fetch!(b"HEAD", format!("{}?q={}", server.url(), "test.html")).send()?;