spikard_http/testing/
form.rs

1use serde_json::Value;
2
3/// Encode JSON form data as application/x-www-form-urlencoded bytes.
4pub fn encode_urlencoded_body(value: &Value) -> Result<Vec<u8>, String> {
5    match value {
6        Value::String(s) => Ok(s.as_bytes().to_vec()),
7        Value::Null => Ok(Vec::new()),
8        Value::Bool(b) => Ok(b.to_string().into_bytes()),
9        Value::Number(num) => Ok(num.to_string().into_bytes()),
10        Value::Object(_) | Value::Array(_) => serde_qs::to_string(value)
11            .map(|encoded| encoded.into_bytes())
12            .map_err(|err| err.to_string()),
13    }
14}