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> { pub fn do_bangs_or_whatever(query: &String) -> Option<BangRedirect> {
error!("Hello, World!");
if !query.contains(BANG_PREFIX) { if !query.contains(BANG_PREFIX) {
return None; return None;
} }
@ -72,27 +71,27 @@ pub fn do_bangs_or_whatever(query: &String) -> Option<BangRedirect> {
}).filter(|bang| bang.is_some()) }).filter(|bang| bang.is_some())
.map(|bang| bang.unwrap()) .map(|bang| bang.unwrap())
.collect::<Vec<_>>(); .collect::<Vec<_>>();
debug!("Result: {:?}", bangs);
let bang = bangs.first()?; let bang = bangs.first()?;
let end_idx = bang.start_idx + 1 + bang.len; 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(); 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); 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 = url_encoded_data::stringify(&[("", query_trimmed.as_str())]);
let query_encoded = query_encoded.get(1..query_encoded.len()).unwrap().to_owned(); 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(); let bang_url_split = bang.url.split_once("{}").unwrap();
debug!("Split bang URL: {:?}", bang_url_split);
let bang_url = format!( let bang_url = format!(
"{}{}{}", "{}{}{}",
bang_url_split.0, bang_url_split.0,
query_encoded, query_encoded,
bang_url_split.1 bang_url_split.1
); );
debug!("Final URL: \"{}\"", bang_url);
Some(BangRedirect{url: bang_url}) Some(BangRedirect{url: bang_url})
} }

View file

@ -70,7 +70,6 @@ pub struct Complications {
disabled: bool, disabled: bool,
wikipedia: Option<WikipediaSummary>, wikipedia: Option<WikipediaSummary>,
unit_converter: Option<UnitConversion>, unit_converter: Option<UnitConversion>,
bang: Option<BangRedirect>
} }
pub async fn search( pub async fn search(
@ -173,11 +172,11 @@ pub async fn search_js(
unit_query = unit_query.replace("metre", "meter"); unit_query = unit_query.replace("metre", "meter");
let unit_comp = unit_converter::convert_unit(&unit_query); let unit_comp = unit_converter::convert_unit(&unit_query);
complications.unit_converter = unit_comp; 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); 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 { } else {
complications.disabled = true; complications.disabled = true;
query = query.replace("-complications", ""); query = query.replace("-complications", "");
@ -290,7 +289,11 @@ pub async fn search_nojs(
unit_query = unit_query.replace("metre", "meter"); unit_query = unit_query.replace("metre", "meter");
let unit_comp = unit_converter::convert_unit(&unit_query); let unit_comp = unit_converter::convert_unit(&unit_query);
complications.unit_converter = unit_comp; 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 { } else {
complications.disabled = true; complications.disabled = true;
query = query.replace("-complications", ""); query = query.replace("-complications", "");