MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / handle_binary_file

Function handle_binary_file

crates/opencode-tool/src/read.rs:237–275  ·  view source on GitHub ↗
(
    path: &Path,
    content: &[u8],
    mime: &str,
    title: String,
)

Source from the content-addressed store, hash-verified

235}
236
237fn handle_binary_file(
238 path: &Path,
239 content: &[u8],
240 mime: &str,
241 title: String,
242) -> Result<ToolResult, ToolError> {
243 let base64_content =
244 base64::Engine::encode(&base64::engine::general_purpose::STANDARD, content);
245 let data_url = format!("data:{};base64,{}", mime, base64_content);
246
247 let file_type = if mime.starts_with("image/") {
248 "Image"
249 } else {
250 "PDF"
251 };
252 let msg = format!("{} read successfully ({} bytes)", file_type, content.len());
253
254 let output = format!(
255 "<path>{}</path>\n<type>binary</type>\n<mime>{}</mime>\n<size>{}</size>\n<data-url>\n{}\n</data-url>",
256 path.display(),
257 mime,
258 content.len(),
259 data_url
260 );
261
262 Ok(ToolResult {
263 title,
264 output,
265 metadata: {
266 let mut m = Metadata::new();
267 m.insert("preview".into(), serde_json::json!(msg));
268 m.insert("truncated".into(), serde_json::json!(false));
269 m.insert("mime".into(), serde_json::json!(mime));
270 m.insert("size".into(), serde_json::json!(content.len()));
271 m
272 },
273 truncated: false,
274 })
275}
276
277fn read_directory(
278 path: &Path,

Callers 1

executeMethod · 0.85

Calls 1

newFunction · 0.85

Tested by

no test coverage detected