From f2da010083b9c80b4cd0f940f2fe9bb518e92d56 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 17 Mar 2026 22:44:25 -0700 Subject: [PATCH] Add skip_serializing_if for UploadResult name and size fields Go's UploadResult uses json:"name,omitempty" and json:"size,omitempty", omitting these fields from JSON when they are zero values (empty string / 0). The Rust struct always serialized them, producing "name":"" and "size":0 where Go would omit them. --- seaweed-volume/src/server/handlers.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/seaweed-volume/src/server/handlers.rs b/seaweed-volume/src/server/handlers.rs index 3d9ea62ad..8fcbbc823 100644 --- a/seaweed-volume/src/server/handlers.rs +++ b/seaweed-volume/src/server/handlers.rs @@ -1794,7 +1794,9 @@ fn encode_image(img: &image::DynamicImage, ext: &str) -> Option> { #[derive(Serialize)] struct UploadResult { + #[serde(skip_serializing_if = "String::is_empty")] name: String, + #[serde(skip_serializing_if = "is_zero_u32")] size: u32, #[serde(rename = "eTag", skip_serializing_if = "String::is_empty")] etag: String, @@ -1804,6 +1806,10 @@ struct UploadResult { content_md5: Option, } +fn is_zero_u32(v: &u32) -> bool { + *v == 0 +} + pub async fn post_handler( State(state): State>,