diff --git a/src/services/async_item_service.rs b/src/services/async_item_service.rs index d4a1615..ed42334 100644 --- a/src/services/async_item_service.rs +++ b/src/services/async_item_service.rs @@ -57,7 +57,7 @@ impl AsyncItemService { item_id: i64, allow_binary: bool, _offset: u64, - _length: u64, + length: u64, ) -> Result<(std::pin::Pin> + Send>>, String), CoreError> { // Get the item content synchronously let item_with_content = self.get_item_content(item_id).await?; @@ -82,8 +82,11 @@ impl AsyncItemService { .map(|s| s.to_string()) .unwrap_or_else(|| "application/octet-stream".to_string()); - // Convert content to stream - let content = item_with_content.content; + // Convert content to stream with length limit + let mut content = item_with_content.content; + if length > 0 && length < content.len() as u64 { + content.truncate(length as usize); + } let stream = Box::pin(tokio_stream::iter(vec![Ok(tokio_util::bytes::Bytes::from(content))])); Ok((stream, mime_type))