forked from asklyphe-public/asklyphe
make it work fully
This commit is contained in:
parent
bac21898c9
commit
64a771f8cc
2 changed files with 16 additions and 14 deletions
|
@ -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})
|
||||||
}
|
}
|
||||||
|
|
|
@ -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", "");
|
||||||
|
|
Loading…
Add table
Reference in a new issue