mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-26 03:11:28 +01:00
30 lines
841 B
Rust
30 lines
841 B
Rust
use reqwest::Url;
|
|
use std::str::FromStr;
|
|
|
|
pub(crate) fn ensure_proto(url_str: &str) -> String {
|
|
if url_str.is_empty() {
|
|
return "".to_string();
|
|
}
|
|
|
|
if url_str.starts_with("http://") || url_str.starts_with("https://") {
|
|
return url_str.to_string();
|
|
}
|
|
|
|
// Url::from_str will fail without a proto, so add one
|
|
let parseable_url = format!("http://{}", url_str);
|
|
if let Ok(u) = Url::from_str(parseable_url.as_str()) {
|
|
match u.host() {
|
|
Some(host) => {
|
|
let h = host.to_string();
|
|
// These TLDs force HTTPS
|
|
if h.ends_with(".app") || h.ends_with(".dev") || h.ends_with(".page") {
|
|
return format!("https://{url_str}");
|
|
}
|
|
}
|
|
None => {}
|
|
}
|
|
}
|
|
|
|
format!("http://{url_str}")
|
|
}
|