/// Normalize a domain. This does the following: /// - removes protocol prefixes /// - removes leading `www` /// - removes query params and path segments. /// /// This function is for roach, and should exactly match the ts implementation. /// /// ## Examples: /// ``` /// # use toolbox::misc::normalize_domain; /// assert_eq!("domain.com", normalize_domain("domain.com")); /// assert_eq!("domain.com", normalize_domain("domain.com/")); /// assert_eq!("domain.com", normalize_domain("domain.com/en/us")); /// assert_eq!("domain.com", normalize_domain("domain.com/?key=val")); /// assert_eq!("domain.com", normalize_domain("www.domain.com")); /// assert_eq!("domain.com", normalize_domain("https://www.domain.com")); /// assert_eq!("us.domain.com", normalize_domain("us.domain.com")); /// ``` pub fn normalize_domain(domain: &str) -> &str { let mut domain = domain.strip_prefix("http://").unwrap_or(domain); domain = domain.strip_prefix("https://").unwrap_or(domain); domain = domain.strip_prefix("www.").unwrap_or(domain); domain = domain.find("/").map_or(domain, |x| &domain[0..x]); return domain; } /* pub fn random_string(length: usize) -> String { rand::rng() .sample_iter(&Alphanumeric) .take(length) .map(char::from) .collect() } */