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)
}