From f6220eb16e3d04d3b800c5a248548e091bd98999 Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Thu, 28 Aug 2025 13:09:00 -0300 Subject: [PATCH] feat: replace binary detection with text metadata check Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) --- src/modes/get.rs | 6 +++--- src/modes/server/api/item.rs | 6 +++--- src/services/async_item_service.rs | 8 ++++---- src/services/item_service.rs | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/modes/get.rs b/src/modes/get.rs index dfeed9d..62ad311 100644 --- a/src/modes/get.rs +++ b/src/modes/get.rs @@ -43,10 +43,10 @@ pub fn mode_get( if detect_binary { let meta_map = item_with_meta.meta_as_map(); - if let Some(binary_val) = meta_map.get("binary") { - if binary_val == "false" { + if let Some(text_val) = meta_map.get("text") { + if text_val == "true" { detect_binary = false; - } else if binary_val == "true" { + } else if text_val == "false" { return Err(anyhow!( "Refusing to output binary data to TTY, use --force to override" )); diff --git a/src/modes/server/api/item.rs b/src/modes/server/api/item.rs index 770a4a9..77c29a9 100644 --- a/src/modes/server/api/item.rs +++ b/src/modes/server/api/item.rs @@ -258,10 +258,10 @@ async fn stream_item_content_response_with_metadata( // Check if content is binary when allow_binary is false if !allow_binary { - let is_binary = if let Some(binary_val) = metadata.get("binary") { - binary_val == "true" + let is_binary = if let Some(text_val) = metadata.get("text") { + text_val == "false" } else { - // If binary metadata isn't set, we need to check the content using streaming approach + // If text metadata isn't set, we need to check the content using streaming approach match item_service.get_item_content_info_streaming(item_id).await { Ok((_, _, is_binary)) => is_binary, Err(e) => { diff --git a/src/services/async_item_service.rs b/src/services/async_item_service.rs index 1fe9c7d..27e9741 100644 --- a/src/services/async_item_service.rs +++ b/src/services/async_item_service.rs @@ -97,8 +97,8 @@ impl AsyncItemService { .map(|s| s.to_string()) .unwrap_or_else(|| "application/octet-stream".to_string()); - let is_binary = if let Some(binary_val) = metadata.get("binary") { - binary_val == "true" + let is_binary = if let Some(text_val) = metadata.get("text") { + text_val == "false" } else { crate::common::is_binary::is_binary(&content_clone) }; @@ -154,8 +154,8 @@ impl AsyncItemService { // Check if content is binary when allow_binary is false if !allow_binary { - let is_binary = if let Some(binary_val) = metadata.get("binary") { - binary_val == "true" + let is_binary = if let Some(text_val) = metadata.get("text") { + text_val == "false" } else { // Get binary status using streaming approach let (_, _, is_binary) = self.get_item_content_info_streaming(item_id).await?; diff --git a/src/services/item_service.rs b/src/services/item_service.rs index 83c3d26..917b819 100644 --- a/src/services/item_service.rs +++ b/src/services/item_service.rs @@ -77,8 +77,8 @@ impl ItemService { .unwrap_or_else(|| "application/octet-stream".to_string()); // Check if content is binary - let is_binary = if let Some(binary_val) = metadata.get("binary") { - binary_val == "true" + let is_binary = if let Some(text_val) = metadata.get("text") { + text_val == "false" } else { crate::common::is_binary::is_binary(&item_with_content.content) }; @@ -110,8 +110,8 @@ impl ItemService { .unwrap_or_else(|| "application/octet-stream".to_string()); // Check if content is binary using only the first 8192 bytes - let is_binary = if let Some(binary_val) = metadata.get("binary") { - binary_val == "true" + let is_binary = if let Some(text_val) = metadata.get("text") { + text_val == "false" } else { // Read only the first 8192 bytes for binary detection let mut sample_reader = self.compression_service.stream_item_content(