lastfm_edit/
vcr_form_data.rs

1use std::collections::HashMap;
2
3/// Parse URL-encoded form data into key-value pairs
4pub fn parse_form_data(data: &str) -> HashMap<String, String> {
5    let mut params = HashMap::new();
6
7    for pair in data.split('&') {
8        if let Some((key, value)) = pair.split_once('=') {
9            // URL decode the key and value
10            let decoded_key = urlencoding::decode(key).unwrap_or_else(|_| key.into());
11            let decoded_value = urlencoding::decode(value).unwrap_or_else(|_| value.into());
12            params.insert(decoded_key.to_string(), decoded_value.to_string());
13        }
14    }
15
16    params
17}
18
19/// Encode form data back to URL-encoded string
20pub fn encode_form_data(params: &HashMap<String, String>) -> String {
21    params
22        .iter()
23        .map(|(key, value)| {
24            format!(
25                "{}={}",
26                urlencoding::encode(key),
27                urlencoding::encode(value)
28            )
29        })
30        .collect::<Vec<_>>()
31        .join("&")
32}