rust_br/check/
url.rs

1pub fn url(url: &str) -> bool {
2    let url_parts: Vec<&str> = url.split("://").collect();
3
4    if url_parts.len() != 2 {
5        return false;
6    }
7
8    let scheme = url_parts[0];
9    let rest = url_parts[1];
10
11    if scheme != "http" && scheme != "https" {
12        return false;
13    }
14
15    let domain_and_path: Vec<&str> = rest.split('/').collect();
16
17    if domain_and_path.is_empty() || domain_and_path[0].is_empty() {
18        return false;
19    }
20
21    let domain = domain_and_path[0];
22
23    if !domain.contains('.') {
24        return false;
25    }
26
27    let domain_parts: Vec<&str> = domain.split('.').collect();
28
29    for part in domain_parts {
30        if part.is_empty()
31            || !part.chars().next().unwrap().is_alphanumeric()
32            || !part.chars().last().unwrap().is_alphanumeric()
33        {
34            return false;
35        }
36    }
37
38    true
39}