1use super::Host;
2
3impl Host for http_0_2::Uri {
4 fn hostname(&self) -> &str {
5 self.host().unwrap_or("")
6 }
7
8 fn port(&self) -> Option<u16> {
9 match self.port_u16() {
10 Some(port) => Some(port),
11 None => scheme_to_port(self.scheme_str()),
12 }
13 }
14}
15
16impl Host for http_1::Uri {
17 fn hostname(&self) -> &str {
18 self.host().unwrap_or("")
19 }
20
21 fn port(&self) -> Option<u16> {
22 match self.port_u16() {
23 Some(port) => Some(port),
24 None => scheme_to_port(self.scheme_str()),
25 }
26 }
27}
28
29fn scheme_to_port(scheme: Option<&str>) -> Option<u16> {
31 match scheme {
32 Some("http") => Some(80),
34 Some("https") => Some(443),
35
36 Some("ws") => Some(80),
38 Some("wss") => Some(443),
39
40 Some("amqp") => Some(5672),
42 Some("amqps") => Some(5671),
43
44 Some("mqtt") => Some(1883),
46 Some("mqtts") => Some(8883),
47
48 Some("ftp") => Some(21),
50 Some("ftps") => Some(990),
51
52 Some("redis") => Some(6379),
54
55 Some("mysql") => Some(3306),
57
58 Some("postgres") => Some(5432),
60
61 _ => None,
62 }
63}