}
pub fn clean_url_params(mut url: Url) -> Url {
- let new_query = url
- .query_pairs()
- .filter(|q| !CLEAN_URL_PARAMS_REGEX.is_match(&q.0))
- .map(|q| format!("{}={}", q.0, q.1))
- .join("&");
- url.set_query(Some(&new_query));
+ if url.query().is_some() {
+ let new_query = url
+ .query_pairs()
+ .filter(|q| !CLEAN_URL_PARAMS_REGEX.is_match(&q.0))
+ .map(|q| format!("{}={}", q.0, q.1))
+ .join("&");
+ url.set_query(Some(&new_query));
+ }
url
}
let cleaned = clean_url_params(url);
let expected = Url::parse("https://example.com/path/123?username=randomuser&id=123").unwrap();
assert_eq!(expected.to_string(), cleaned.to_string());
+
+ let url = Url::parse("https://example.com/path/123").unwrap();
+ let cleaned = clean_url_params(url.clone());
+ assert_eq!(url.to_string(), cleaned.to_string());
}
}