Use Option<usize> for content_length

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
This commit is contained in:
Alexander Onnikov
2025-09-04 22:05:06 +07:00
parent 1c1e759827
commit bb362c3ee5
2 changed files with 13 additions and 9 deletions
+7 -4
View File
@@ -378,10 +378,13 @@ pub async fn head(request: HttpRequest) -> HandlerResult<HttpResponse> {
// see https://github.com/actix/examples/blob/master/forms/multipart-s3/src/main.rs#L67-L79
let content_length = merge::content_length(parts);
response.body(SizedStream::new(
content_length as u64,
stream::empty::<Result<_, io::Error>>().boxed_local(),
))
match content_length {
Some(content_length) => response.body(SizedStream::new(
content_length as u64,
stream::empty::<Result<_, io::Error>>().boxed_local(),
)),
None => response.finish(),
}
} else {
HttpResponse::NotFound().finish()
};
+6 -5
View File
@@ -156,22 +156,23 @@ pub async fn stream(
}
}
pub fn content_length(parts: Vec<ObjectPart<PartData>>) -> usize {
pub fn content_length(parts: Vec<ObjectPart<PartData>>) -> Option<usize> {
let first = parts.first().unwrap();
let merge_strategy = first.data.merge_strategy.unwrap();
let mut content_length: usize = 0;
match merge_strategy {
MergeStrategy::Concatenate => {
let mut content_length = 0;
for part in parts {
content_length += part.data.size;
}
Some(content_length)
}
MergeStrategy::JsonPatch => return 0,
MergeStrategy::JsonPatch => None,
}
content_length
}
async fn part_data(s3: &S3Client, part: ObjectPart<PartData>) -> anyhow::Result<Vec<u8>> {