refactor: deduplicate filter plugins, extract helpers across codebase
Bug fixes: - client: add error field to ApiResponse to avoid swallowing server errors - args/config: fix list_format default mismatch (5 vs 7 columns) - client: url-encode size param in set_item_size Dedup - filter plugins: - Extract count_option() and pattern_option() helpers, replace 7 identical options() - Add #[derive(Clone)] to all filter structs; remove verbose clone_box() impls - Simplify FilterChain clone() and impl Clone for Box<dyn FilterPlugin> - Add filter_clone_box! macro for future use - Fix doctest example missing clone_box Dedup - server API: - Extract spawn_body_reader() with LimitBehavior enum for body streaming - Extract check_binary_content() helper - Extract stream_with_offset_and_length() helper - Extract generate_status() helper in status.rs - Extract append_query_params() helper in client.rs Dedup - other: - Extract yaml_value_to_string() in meta_plugin/mod.rs - Extract item_from_row() in db.rs - Delete unused DisplayListItem struct Misc: - Remove duplicate doc comment in compression_service.rs
This commit is contained in:
@@ -306,22 +306,7 @@ pub fn process_metadata_outputs(
|
||||
return None;
|
||||
}
|
||||
if let Some(custom_name) = mapping.as_str() {
|
||||
// Convert the value to a string representation
|
||||
let value_str = match &value {
|
||||
serde_yaml::Value::Null => "null".to_string(),
|
||||
serde_yaml::Value::Bool(b) => b.to_string(),
|
||||
serde_yaml::Value::Number(n) => n.to_string(),
|
||||
serde_yaml::Value::String(s) => s.clone(),
|
||||
serde_yaml::Value::Sequence(_) => {
|
||||
serde_yaml::to_string(&value).unwrap_or_else(|_| "".to_string())
|
||||
}
|
||||
serde_yaml::Value::Mapping(_) => {
|
||||
serde_yaml::to_string(&value).unwrap_or_else(|_| "".to_string())
|
||||
}
|
||||
serde_yaml::Value::Tagged(_) => {
|
||||
serde_yaml::to_string(&value).unwrap_or_else(|_| "".to_string())
|
||||
}
|
||||
};
|
||||
let value_str = yaml_value_to_string(&value);
|
||||
debug!(
|
||||
"META: Processing metadata: internal_name={internal_name}, custom_name={custom_name}, value={value_str}"
|
||||
);
|
||||
@@ -332,22 +317,7 @@ pub fn process_metadata_outputs(
|
||||
}
|
||||
}
|
||||
|
||||
// Convert the value to a string representation
|
||||
let value_str = match &value {
|
||||
serde_yaml::Value::Null => "null".to_string(),
|
||||
serde_yaml::Value::Bool(b) => b.to_string(),
|
||||
serde_yaml::Value::Number(n) => n.to_string(),
|
||||
serde_yaml::Value::String(s) => s.clone(),
|
||||
serde_yaml::Value::Sequence(_) => {
|
||||
serde_yaml::to_string(&value).unwrap_or_else(|_| "".to_string())
|
||||
}
|
||||
serde_yaml::Value::Mapping(_) => {
|
||||
serde_yaml::to_string(&value).unwrap_or_else(|_| "".to_string())
|
||||
}
|
||||
serde_yaml::Value::Tagged(_) => {
|
||||
serde_yaml::to_string(&value).unwrap_or_else(|_| "".to_string())
|
||||
}
|
||||
};
|
||||
let value_str = yaml_value_to_string(&value);
|
||||
|
||||
// Default: use internal name as output name
|
||||
debug!("META: Processing metadata: name={internal_name}, value={value_str}");
|
||||
@@ -357,6 +327,20 @@ pub fn process_metadata_outputs(
|
||||
})
|
||||
}
|
||||
|
||||
fn yaml_value_to_string(value: &serde_yaml::Value) -> String {
|
||||
match value {
|
||||
serde_yaml::Value::Null => "null".to_string(),
|
||||
serde_yaml::Value::Bool(b) => b.to_string(),
|
||||
serde_yaml::Value::Number(n) => n.to_string(),
|
||||
serde_yaml::Value::String(s) => s.clone(),
|
||||
serde_yaml::Value::Sequence(_)
|
||||
| serde_yaml::Value::Mapping(_)
|
||||
| serde_yaml::Value::Tagged(_) => {
|
||||
serde_yaml::to_string(value).unwrap_or_else(|_| "".to_string())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub trait MetaPlugin: Send
|
||||
where
|
||||
Self: 'static,
|
||||
|
||||
Reference in New Issue
Block a user