-
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathurldencode.rs
37 lines (35 loc) · 1.32 KB
/
urldencode.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use crate::{commands::kanha_helpers::read_lines, interface::DencodeArgs, log::abort};
use urlencoding::{decode, encode};
pub async fn dencode_urls(dencode_args: DencodeArgs) -> Result<(), Box<dyn std::error::Error>> {
match (dencode_args.encode.as_ref(), dencode_args.decode.as_ref()) {
(Some(filename), None) => {
let urls = read_lines(filename).await?;
for line_result in urls {
let url = line_result?;
let encoded_url = encode(&url);
println!("{}", encoded_url);
}
}
(None, Some(filename)) => {
let urls = read_lines(filename).await?;
for line_result in urls {
let url = line_result?;
let decoded_url = decode(&url);
println!(
"{}",
decoded_url.unwrap_or_else(|err| {
println!("error decoding URL: {:?}", err);
abort("something went wrong while decoding URLs");
})
);
}
}
(Some(_), Some(_)) => {
println!("Both encode and decode options provided. Please provide only one.");
}
(None, None) => {
println!("No encode or decode option provided.");
}
}
Ok(())
}