refactor: simplify filter plugin interface to use &mut dyn Read/Write

This commit is contained in:
Andrew Phillips
2025-09-15 17:42:35 -03:00
committed by Andrew Phillips (aider)
parent a8871a9575
commit a72395fe83
17 changed files with 102 additions and 138 deletions

View File

@@ -4,13 +4,14 @@ use magic::{Cookie, CookieFlags};
use std::process::{Command, Stdio};
use std::io::{self, Write};
use std::path::Path;
use log::debug;
use crate::meta_plugin::{MetaPlugin, MetaPluginType, BaseMetaPlugin, MetaPluginResponse, MetaData, process_metadata_outputs};
#[cfg(feature = "magic")]
#[derive(Debug)]
pub struct MagicFileMetaPlugin {
pub struct MagicFileMetaPluginImpl {
buffer: Vec<u8>,
max_buffer_size: usize,
is_finalized: bool,
@@ -19,11 +20,11 @@ pub struct MagicFileMetaPlugin {
}
#[cfg(feature = "magic")]
impl MagicFileMetaPlugin {
impl MagicFileMetaPluginImpl {
pub fn new(
options: Option<std::collections::HashMap<String, serde_yaml::Value>>,
outputs: Option<std::collections::HashMap<String, serde_yaml::Value>>,
) -> MagicFileMetaPlugin {
) -> MagicFileMetaPluginImpl {
let mut base = BaseMetaPlugin::new();
// Set default outputs
@@ -36,7 +37,7 @@ impl MagicFileMetaPlugin {
.and_then(|v| v.as_u64())
.unwrap_or(crate::common::PIPESIZE as u64) as usize;
MagicFileMetaPlugin {
MagicFileMetaPluginImpl {
buffer: Vec::new(),
max_buffer_size,
is_finalized: false,
@@ -68,7 +69,7 @@ impl MagicFileMetaPlugin {
let types_to_process = [
("mime_type", CookieFlags::MIME_TYPE),
("mime_encoding", CookieFlags::MIME_ENCODING),
("file_type", CookieFlags::NONE),
("file_type", CookieFlags::empty()),
];
for (name, flags) in types_to_process.iter() {
@@ -90,7 +91,7 @@ impl MagicFileMetaPlugin {
}
#[cfg(feature = "magic")]
impl MetaPlugin for MagicFileMetaPlugin {
impl MetaPlugin for MagicFileMetaPluginImpl {
fn is_finalized(&self) -> bool {
self.is_finalized
}
@@ -111,7 +112,7 @@ impl MetaPlugin for MagicFileMetaPlugin {
}
};
if let Err(e) = cookie.load(&[]) {
if let Err(e) = cookie.load(&[] as &[&Path]) {
debug!("META: MagicFile plugin: failed to load magic database: {}", e);
return MetaPluginResponse {
metadata: Vec::new(),
@@ -404,12 +405,10 @@ impl MetaPlugin for FallbackMagicFileMetaPlugin {
}
#[cfg(feature = "magic")]
use MagicFileMetaPlugin as MagicFileMetaPluginImpl;
pub use MagicFileMetaPluginImpl as MagicFileMetaPlugin;
#[cfg(not(feature = "magic"))]
use FallbackMagicFileMetaPlugin as MagicFileMetaPluginImpl;
pub use MagicFileMetaPluginImpl as MagicFileMetaPlugin;
pub use FallbackMagicFileMetaPlugin as MagicFileMetaPlugin;
use crate::meta_plugin::register_meta_plugin;
@@ -419,3 +418,4 @@ fn register_magic_file_plugin() {
Box::new(MagicFileMetaPlugin::new(options, outputs))
});
}