pub(crate) fn strip_schemes(s: &str) -> &str {
let mut rest = s;
loop {
if let Some(t) = rest.strip_prefix("http://") {
rest = t;
} else if let Some(t) = rest.strip_prefix("https://") {
rest = t;
} else {
break;
}
}
rest
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_strip_schemes_bare_unchanged() {
assert_eq!(strip_schemes("127.0.0.1:7788"), "127.0.0.1:7788");
}
#[test]
fn test_strip_schemes_strips_http() {
assert_eq!(strip_schemes("http://127.0.0.1:7788"), "127.0.0.1:7788");
}
#[test]
fn test_strip_schemes_strips_https() {
assert_eq!(strip_schemes("https://127.0.0.1:7788"), "127.0.0.1:7788");
}
#[test]
fn test_strip_schemes_strips_double_http() {
assert_eq!(
strip_schemes("http://http://127.0.0.1:7788"),
"127.0.0.1:7788"
);
}
#[test]
fn test_strip_schemes_strips_mixed_https_http() {
assert_eq!(
strip_schemes("https://http://127.0.0.1:7788"),
"127.0.0.1:7788"
);
}
}