use axum::http::HeaderMap; use serde_json::Value; pub fn list_buckets_xml(buckets: &[String]) -> (HeaderMap, String) { let mut headers = HeaderMap::new(); headers.insert("Content-Type", "application/xml".parse().unwrap()); let bucket_entries = buckets .iter() .map(|b| format!( "{}2026-05-27T00:00:00Z", b )) .collect::>() .join("\n "); let xml = format!( " owner-id MarkBase {} ", bucket_entries ); (headers, xml) } pub fn list_objects_xml(bucket_name: &str, objects: &[Value]) -> (HeaderMap, String) { let mut headers = HeaderMap::new(); headers.insert("Content-Type", "application/xml".parse().unwrap()); let object_entries = objects .iter() .map(|obj| { let key = obj.get("Key").and_then(|k| k.as_str()).unwrap_or(""); let last_modified = obj.get("LastModified").and_then(|l| l.as_str()).unwrap_or(""); let etag = obj.get("ETag").and_then(|e| e.as_str()).unwrap_or(""); let size = obj.get("Size").and_then(|s| s.as_i64()).unwrap_or(0); format!( " {} {} {} {} ", key, last_modified, etag, size ) }) .collect::>() .join("\n "); let xml = format!( " {} 1000 false {} ", bucket_name, object_entries ); (headers, xml) }