From d912bff94e912d77d7bfbdcf327f7adff514c45a Mon Sep 17 00:00:00 2001 From: ddotthomas Date: Mon, 8 Jan 2024 11:46:21 -0700 Subject: [PATCH] change: revert Cookie Strings back to &str --- src/models/server_models.rs | 14 +++++++------- src/server/routes/search.rs | 16 +++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/models/server_models.rs b/src/models/server_models.rs index a13a7dd..8b19463 100644 --- a/src/models/server_models.rs +++ b/src/models/server_models.rs @@ -21,24 +21,24 @@ pub struct SearchParams { /// A named struct which is used to deserialize the cookies fetched from the client side. #[allow(dead_code)] #[derive(Deserialize)] -pub struct Cookie { +pub struct Cookie<'a> { /// It stores the theme name used in the website. - pub theme: String, + pub theme: &'a str, /// It stores the colorscheme name used for the website theme. - pub colorscheme: String, + pub colorscheme: &'a str, /// It stores the user selected upstream search engines selected from the UI. pub engines: Vec, /// It stores the user selected safe search level from the UI. pub safe_search_level: u8, } -impl Cookie { +impl<'a> Cookie<'a> { /// server_models::Cookie contructor function - pub fn build(style: &Style, mut engines: Vec, safe_search_level: u8) -> Self { + pub fn build(style: &'a Style, mut engines: Vec, safe_search_level: u8) -> Self { engines.sort(); Self { - theme: style.theme.clone(), - colorscheme: style.colorscheme.clone(), + theme: &style.theme, + colorscheme: &style.colorscheme, engines, safe_search_level, } diff --git a/src/server/routes/search.rs b/src/server/routes/search.rs index 4e3d309..cc16486 100644 --- a/src/server/routes/search.rs +++ b/src/server/routes/search.rs @@ -62,9 +62,11 @@ pub async fn search( ) }; + let cookie = req.cookie("appCookie"); + // Get search settings using the user's cookie or from the server's config - let mut search_settings: server_models::Cookie = match req.cookie("appCookie") { - Some(cookie_value) => { + let mut search_settings: server_models::Cookie<'_> = match cookie { + Some(ref cookie_value) => { match serde_json::from_str(cookie_value.value()) { Ok(cookie) => cookie, // If there's an issue parsing the cookie's value, default to the config @@ -127,10 +129,10 @@ async fn results( cache: &web::Data, query: &str, page: u32, - user_settings: &server_models::Cookie, + search_settings: &server_models::Cookie<'_>, ) -> Result> { // eagerly parse cookie value to evaluate safe search level - let safe_search_level = user_settings.safe_search_level; + let safe_search_level = search_settings.safe_search_level; let cache_key = format!( "http://{}:{}/search?q={}&page={}&safesearch={}&engines={}", @@ -139,7 +141,7 @@ async fn results( query, page, safe_search_level, - user_settings.engines.join(",") + search_settings.engines.join(",") ); // fetch the cached results json. @@ -167,14 +169,14 @@ async fn results( // default selected upstream search engines from the config file otherwise // parse the non-empty cookie and grab the user selected engines from the // UI and use that. - let mut results: SearchResults = match user_settings.engines.is_empty() { + let mut results: SearchResults = match search_settings.engines.is_empty() { false => { aggregate( query, page, config.aggregator.random_delay, config.debug, - &user_settings + &search_settings .engines .clone() .into_iter()