38 lines
1.0 KiB
Rust
38 lines
1.0 KiB
Rust
use std::borrow::Cow;
|
|
use url::Url;
|
|
|
|
/// obfuscate urls with api token like http://mango.rpcpool.com/a991fba00fagbad
|
|
pub fn url_obfuscate_api_token(url: &str) -> Cow<str> {
|
|
if let Ok(mut parsed) = Url::parse(url) {
|
|
if parsed.path() == "/" {
|
|
return Cow::Borrowed(url);
|
|
} else {
|
|
parsed.set_path("omitted-secret");
|
|
Cow::Owned(parsed.to_string())
|
|
}
|
|
} else {
|
|
Cow::Borrowed(url)
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_obfuscate_path() {
|
|
let url_mango = "http://mango.rpcpool.com/121sdfsdf21";
|
|
let obfuscated = url_obfuscate_api_token(url_mango);
|
|
assert_eq!(obfuscated, "http://mango.rpcpool.com/omitted-secret");
|
|
}
|
|
|
|
#[test]
|
|
fn test_obfuscate_nopath() {
|
|
let url_localhost = "http://127.0.0.1";
|
|
let obfuscated = url_obfuscate_api_token(url_localhost);
|
|
assert_eq!(obfuscated, "http://127.0.0.1");
|
|
}
|
|
|
|
#[test]
|
|
fn test_obfuscate_invalid() {
|
|
let url_localhost = "::::invalid";
|
|
let obfuscated = url_obfuscate_api_token(url_localhost);
|
|
assert_eq!(obfuscated, "::::invalid");
|
|
}
|