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}