krpc_common/
url_util.rs

1use percent_encoding::{self, percent_decode_str, percent_encode, AsciiSet, CONTROLS};
2const FRAGMENT: &AsciiSet = &CONTROLS
3    .add(b':')
4    .add(b'/')
5    .add(b'&')
6    .add(b'?')
7    .add(b'=')
8    .add(b',');
9
10pub fn decode_url(url: &str) -> Result<String, String> {
11    Ok(percent_decode_str(url)
12        .decode_utf8()
13        .map_err(|e|e.to_string())?.to_string())
14}
15pub fn encode_url(url: &str) -> String {
16    percent_encode(url.as_bytes(), FRAGMENT).to_string()
17}