make it work fully

This commit is contained in:
Book-reader 2025-05-08 19:21:13 +12:00
parent bac21898c9
commit 64a771f8cc
2 changed files with 16 additions and 14 deletions

View file

@ -46,7 +46,6 @@ pub struct BangRedirect {
}
pub fn do_bangs_or_whatever(query: &String) -> Option<BangRedirect> {
error!("Hello, World!");
if !query.contains(BANG_PREFIX) {
return None;
}
@ -72,27 +71,27 @@ pub fn do_bangs_or_whatever(query: &String) -> Option<BangRedirect> {
}).filter(|bang| bang.is_some())
.map(|bang| bang.unwrap())
.collect::<Vec<_>>();
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})
}

View file

@ -70,7 +70,6 @@ pub struct Complications {
disabled: bool,
wikipedia: Option<WikipediaSummary>,
unit_converter: Option<UnitConversion>,
bang: Option<BangRedirect>
}
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", "");