(server_url: &str)
| 5125 | |
| 5126 | impl InspectorServiceEndpoint { |
| 5127 | fn parse(server_url: &str) -> Result<Self, String> { |
| 5128 | let authority = server_url |
| 5129 | .trim() |
| 5130 | .strip_prefix("http://") |
| 5131 | .ok_or_else(|| format!("Published inspector URL must use http://: {server_url}"))? |
| 5132 | .split('/') |
| 5133 | .next() |
| 5134 | .unwrap_or_default(); |
| 5135 | let (host, port) = if let Some(rest) = authority.strip_prefix('[') { |
| 5136 | let (host, rest) = rest |
| 5137 | .split_once(']') |
| 5138 | .ok_or_else(|| format!("Published inspector URL has invalid host: {server_url}"))?; |
| 5139 | let port = rest |
| 5140 | .strip_prefix(':') |
| 5141 | .ok_or_else(|| format!("Published inspector URL is missing a port: {server_url}"))? |
| 5142 | .parse::<u16>() |
| 5143 | .map_err(|error| format!("Published inspector URL has invalid port: {error}"))?; |
| 5144 | (host.to_owned(), port) |
| 5145 | } else { |
| 5146 | let (host, port) = authority.rsplit_once(':').ok_or_else(|| { |
| 5147 | format!("Published inspector URL is missing a port: {server_url}") |
| 5148 | })?; |
| 5149 | let port = port |
| 5150 | .parse::<u16>() |
| 5151 | .map_err(|error| format!("Published inspector URL has invalid port: {error}"))?; |
| 5152 | (host.to_owned(), port) |
| 5153 | }; |
| 5154 | if host.trim().is_empty() { |
| 5155 | return Err(format!( |
| 5156 | "Published inspector URL has empty host: {server_url}" |
| 5157 | )); |
| 5158 | } |
| 5159 | Ok(Self { host, port }) |
| 5160 | } |
| 5161 | |
| 5162 | fn host_header(&self) -> String { |
| 5163 | if self.host.contains(':') { |
no test coverage detected