text_utils/utils/urls/
mod.rs

1use percent_encoding::{percent_decode, percent_encode, AsciiSet, CONTROLS};
2
3const NON_URL: &AsciiSet = &CONTROLS
4    .add(b' ')
5    .add(b'!')
6    .add(b'"')
7    .add(b'#')
8    .add(b'$')
9    .add(b'%')
10    .add(b'&')
11    .add(b'\'')
12    .add(b'(')
13    .add(b')')
14    .add(b'*')
15    .add(b'+')
16    .add(b',')
17    .add(b'-')
18    //  .add(b':')
19    .add(b';')
20    .add(b'<')
21    .add(b'=')
22    .add(b'>')
23    //  .add(b'?')
24    .add(b'@')
25    .add(b'[')
26    .add(b'\\')
27    .add(b']')
28    .add(b'^')
29    .add(b'_')
30    .add(b'`')
31    .add(b'{')
32    .add(b'|')
33    .add(b'}')
34    .add(b'~');
35
36/// url_encode
37pub fn url_encode(text: impl AsRef<str>) -> String {
38    percent_encode(text.as_ref().as_bytes(), NON_URL).to_string()
39}
40
41/// url_decode
42pub fn url_decode(text: impl AsRef<str>) -> Option<String> {
43    match percent_decode(text.as_ref().as_bytes()).decode_utf8() {
44        Ok(cow) => Some(cow.to_string()),
45        Err(_) => None,
46    }
47}
48// pub fn html_encode() {
49//
50// }
51//
52// pub fn html_decode() {
53//
54// }