fix(object): normalize storage class responses (#3726)

This commit is contained in:
houseme
2026-06-22 13:54:12 +08:00
committed by GitHub
parent 7bfa80cb0b
commit da5ff226ba
+13 -6
View File
@@ -2897,12 +2897,7 @@ impl DefaultObjectUsecase {
validate_ssec_for_read(&info.user_defined, sse_customer_key.as_ref(), sse_customer_key_md5.as_ref())?;
let metadata_map = info.user_defined.clone();
let storage_class = info
.storage_class
.clone()
.or_else(|| metadata_map.get(AMZ_STORAGE_CLASS).cloned())
.filter(|s| !s.is_empty())
.map(StorageClass::from);
let storage_class = response_storage_class(&info, &metadata_map);
debug!(
"GetObjectAttributes raw object_attributes={:?}",
@@ -5825,6 +5820,18 @@ mod tests {
.map(StorageClass::as_str),
Some(storageclass::STANDARD_IA)
);
let mut metadata = HashMap::new();
metadata.insert(AMZ_STORAGE_CLASS.to_string(), storageclass::STANDARD.to_string());
let standard_metadata_info = ObjectInfo {
storage_class: None,
user_defined: Arc::new(metadata.clone()),
..Default::default()
};
assert!(
response_storage_class(&standard_metadata_info, &metadata).is_none(),
"STANDARD must be omitted even when it only arrives via metadata fallback"
);
}
#[tokio::test]