From 3e6f7867ebd32516fae04851e9bfc5dd319f39f0 Mon Sep 17 00:00:00 2001 From: neon_arch Date: Fri, 14 Jul 2023 17:20:46 +0300 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20add=20code=20to=20parse=20c?= =?UTF-8?q?ookies=20and=20handle=20engine=20selection=20from=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/routes.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/server/routes.rs b/src/server/routes.rs index ae511b6..545e1d0 100644 --- a/src/server/routes.rs +++ b/src/server/routes.rs @@ -51,6 +51,14 @@ pub async fn not_found( .body(page_content)) } +#[allow(dead_code)] +#[derive(Deserialize)] +struct Cookie { + theme: String, + colorscheme: String, + engines: Vec, +} + /// Handles the route of search page of the `websurfx` meta search engine website and it takes /// two search url parameters `q` and `page` where `page` parameter is optional. /// @@ -127,8 +135,13 @@ pub async fn search( Ok(HttpResponse::Ok().body(page_content)) } Err(_) => { - let mut results_json: crate::search_results_handler::aggregation_models::SearchResults = - aggregate(query.clone(), page, config.aggregator.random_delay, config.debug, config.upstream_search_engines.clone()).await?; + let mut results_json: crate::search_results_handler::aggregation_models::SearchResults = match req.cookie("appCookie") { + Some(cookie_value) => { + let cookie_value:Cookie = serde_json::from_str(cookie_value.name_value().1).unwrap(); + aggregate(query.clone(), page, config.aggregator.random_delay, config.debug, cookie_value.engines).await? + }, + None => aggregate(query.clone(), page, config.aggregator.random_delay, config.debug, config.upstream_search_engines.clone()).await?, + }; results_json.add_style(config.style.clone()); redis_cache .cache_results(serde_json::to_string(&results_json)?, &page_url)?;