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}