From 64a771f8cc2b135f65cbe7f8d4ba1126ce4caa3f Mon Sep 17 00:00:00 2001 From: Book-reader Date: Thu, 8 May 2025 19:21:13 +1200 Subject: [PATCH] make it work fully --- asklyphe-frontend/src/bangs.rs | 15 +++++++-------- asklyphe-frontend/src/routes/search.rs | 15 +++++++++------ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/asklyphe-frontend/src/bangs.rs b/asklyphe-frontend/src/bangs.rs index 83eb1e8..682bd32 100644 --- a/asklyphe-frontend/src/bangs.rs +++ b/asklyphe-frontend/src/bangs.rs @@ -46,7 +46,6 @@ pub struct BangRedirect { } pub fn do_bangs_or_whatever(query: &String) -> Option { - error!("Hello, World!"); if !query.contains(BANG_PREFIX) { return None; } @@ -72,27 +71,27 @@ pub fn do_bangs_or_whatever(query: &String) -> Option { }).filter(|bang| bang.is_some()) .map(|bang| bang.unwrap()) .collect::>(); - debug!("Result: {:?}", bangs); + let bang = bangs.first()?; let end_idx = bang.start_idx + 1 + bang.len; - debug!("Initial query: \"{}\"", query); + let query_split = query.split_once(query.get(bang.start_idx..end_idx).unwrap()).unwrap(); - debug!("Split query: {:?}", query_split); + let query_trimmed = format!("{}{}", query_split.0, query_split.1); - debug!("Trimmed query: \"{}\"", query_trimmed); + let query_encoded = url_encoded_data::stringify(&[("", query_trimmed.as_str())]); let query_encoded = query_encoded.get(1..query_encoded.len()).unwrap().to_owned(); - debug!("Encoded query: {:?}", query_encoded); + let bang_url_split = bang.url.split_once("{}").unwrap(); - debug!("Split bang URL: {:?}", bang_url_split); + let bang_url = format!( "{}{}{}", bang_url_split.0, query_encoded, bang_url_split.1 ); - debug!("Final URL: \"{}\"", bang_url); + Some(BangRedirect{url: bang_url}) } diff --git a/asklyphe-frontend/src/routes/search.rs b/asklyphe-frontend/src/routes/search.rs index af33081..4509740 100644 --- a/asklyphe-frontend/src/routes/search.rs +++ b/asklyphe-frontend/src/routes/search.rs @@ -70,7 +70,6 @@ pub struct Complications { disabled: bool, wikipedia: Option, unit_converter: Option, - bang: Option } pub async fn search( @@ -173,11 +172,11 @@ pub async fn search_js( unit_query = unit_query.replace("metre", "meter"); let unit_comp = unit_converter::convert_unit(&unit_query); complications.unit_converter = unit_comp; - /*if let Some(bang, result_query) = bangs::do_bangs_or_whatever(&query) { - error!("Would redirect to '{}', but it's not implemented", format!(bang, result_query)); - }*/ + let bang_redirect = bangs::do_bangs_or_whatever(&query); - complications.bang = bang_redirect; + if let Some(redirect) = bang_redirect { + return Redirect::to(&redirect.url).into_response(); + } } else { complications.disabled = true; query = query.replace("-complications", ""); @@ -290,7 +289,11 @@ pub async fn search_nojs( unit_query = unit_query.replace("metre", "meter"); let unit_comp = unit_converter::convert_unit(&unit_query); complications.unit_converter = unit_comp; - let bang = bangs::do_bangs_or_whatever(&query); + + let bang_redirect = bangs::do_bangs_or_whatever(&query); + if let Some(redirect) = bang_redirect { + return Redirect::to(&redirect.url).into_response(); + } } else { complications.disabled = true; query = query.replace("-complications", "");