Skip to main content

zip_extensions/audit/handlers/
entry_audit_handler.rs

1use super::duplicates::DuplicatesHandler;
2use super::encryption::EncryptionHandler;
3use super::entry_view::EntryView;
4use super::names::NamesHandler;
5use super::path::PathHandler;
6use super::ratios::RatiosHandler;
7use super::recommendations::RecommendationsHandler;
8use super::symlinks::SymlinksHandler;
9use crate::audit::report::ZipAuditReport;
10
11/// Trait for pluggable, focused analyses executed for each entry.
12pub trait EntryAuditHandler {
13    fn begin(&mut self, _zip_len: usize) {}
14    fn visit(&mut self, view: &EntryView, report: &mut ZipAuditReport);
15    fn finish(&mut self, _report: &mut ZipAuditReport) {}
16}
17
18/// Create the default set of handlers used by `zip_audit_*` APIs.
19pub fn default_handlers() -> Vec<Box<dyn EntryAuditHandler>> {
20    vec![
21        Box::new(PathHandler),
22        Box::new(RatiosHandler),
23        Box::new(NamesHandler),
24        Box::new(EncryptionHandler),
25        Box::new(DuplicatesHandler::new()),
26        Box::new(SymlinksHandler),
27        Box::new(RecommendationsHandler),
28    ]
29}