From b0ed41ef708175ad857c95c6c2ffc2a7147b5e50 Mon Sep 17 00:00:00 2001 From: Milim Date: Thu, 15 Aug 2024 10:45:45 +0200 Subject: [PATCH] some more sanity improvements --- Cargo.lock | 1 - Cargo.toml | 4 ---- src/config.rs | 10 +++++++++- src/models/server_models.rs | 2 +- src/results/aggregator.rs | 4 +++- src/server/routes/search.rs | 4 ++-- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a406f74..48c29bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3674,7 +3674,6 @@ dependencies = [ "scraper", "serde", "serde_json", - "tempfile", "tokio 1.39.2", ] diff --git a/Cargo.toml b/Cargo.toml index 7767269..747539a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,10 +51,6 @@ async-compression = { version = "0.4.11", default-features = false, features = [ cfg-if = { version = "1.0.0", default-features = false, optional = true } figment = { version = "0.10", features = ["env"] } - -[dev-dependencies] -tempfile = { version = "3.10.1", default-features = false } - [features] compress-cache-results = ["dep:async-compression", "dep:cfg-if"] experimental-io-uring = ["actix-web/experimental-io-uring"] diff --git a/src/config.rs b/src/config.rs index 18f6e3f..d7cf3b1 100644 --- a/src/config.rs +++ b/src/config.rs @@ -67,7 +67,15 @@ impl Default for Config { logging: true, debug: false, adaptive_window: false, - upstream_search_engines: vec!["bing".into(), "brave".into()], + upstream_search_engines: vec![ + "bing".into(), + "brave".into(), + "duckduckgo".into(), + "librex".into(), + "mojeek".into(), + "searx".into(), + "startpage".into(), + ], request_timeout: 2, tcp_connection_keep_alive: 10, pool_idle_connection_timeout: 30, diff --git a/src/models/server_models.rs b/src/models/server_models.rs index 58d90fd..a536683 100644 --- a/src/models/server_models.rs +++ b/src/models/server_models.rs @@ -11,7 +11,7 @@ use crate::config::Style; pub struct SearchParams { /// It stores the search parameter option `q` (or query in simple words) /// of the search url. - pub query: Option, + pub q: Option, /// It stores the search parameter `page` (or pageno in simple words) /// of the search url. pub page: Option, diff --git a/src/results/aggregator.rs b/src/results/aggregator.rs index a7116c6..7386bb2 100644 --- a/src/results/aggregator.rs +++ b/src/results/aggregator.rs @@ -147,7 +147,9 @@ pub async fn aggregate( }; } - let results: Vec = result_map.iter().map(|(_, value)| value.clone()).collect(); + let mut results: Vec = + result_map.iter().map(|(_, value)| value.clone()).collect(); + results.sort_by(|a, b| a.description.len().cmp(&b.description.len())); Ok(SearchResults::new(results, &engine_errors_info)) } diff --git a/src/server/routes/search.rs b/src/server/routes/search.rs index 85e65a2..9c30f2a 100644 --- a/src/server/routes/search.rs +++ b/src/server/routes/search.rs @@ -36,13 +36,13 @@ pub async fn search( ) -> Result> { let params = web::Query::::from_query(req.query_string())?; - if !params.query.as_ref().is_some_and(|q| !q.trim().is_empty()) { + if params.q.as_ref().is_some_and(|q| q.trim().is_empty()) || params.q.is_none() { return Ok(HttpResponse::TemporaryRedirect() .insert_header(("location", "/")) .finish()); } - let query = params.query.as_ref().unwrap(); + let query = params.q.as_ref().unwrap().trim(); let cookie = req.cookie("appCookie");