From 6ee1c64080e83e20a298dc9dc39c81d1c9e8654a Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Mon, 25 Aug 2025 19:11:03 -0300 Subject: [PATCH] feat: implement length parameter handling in stream_item_content_by_id Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) --- src/services/async_item_service.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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))