refactor: simplify filter plugin interface to use &mut dyn Read/Write
This commit is contained in:
committed by
Andrew Phillips (aider)
parent
a8871a9575
commit
a72395fe83
@@ -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))
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user