domi_server/tools/
types.rs1use url::Url;
8
9pub const DEFAULT_SERVER: &str = "http://127.0.0.1:4173";
13
14pub fn parse_server(input: &str) -> Result<Url, String> {
20 let trimmed = input.trim();
21 if trimmed.is_empty() {
22 return Url::parse(DEFAULT_SERVER).map_err(|e| e.to_string());
23 }
24 Url::parse(trimmed).map_err(|e| format!("invalid --server URL {trimmed:?}: {e}"))
25}
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30
31 #[test]
32 fn default_server_is_local_4173() {
33 let u = Url::parse(DEFAULT_SERVER).unwrap();
34 assert_eq!(u.scheme(), "http");
35 assert_eq!(u.host_str(), Some("127.0.0.1"));
36 assert_eq!(u.port(), Some(4173));
37 }
38
39 #[test]
40 fn empty_input_falls_back_to_default() {
41 let u = parse_server("").unwrap();
42 assert_eq!(u.as_str(), format!("{DEFAULT_SERVER}/"));
44 }
45
46 #[test]
47 fn valid_url_round_trips() {
48 let u = parse_server("https://example.com:9000/").unwrap();
49 assert_eq!(u.scheme(), "https");
50 assert_eq!(u.host_str(), Some("example.com"));
51 assert_eq!(u.port(), Some(9000));
52 }
53
54 #[test]
55 fn invalid_url_returns_err() {
56 assert!(parse_server("not a url").is_err());
57 }
58}