use std::sync::Arc;
use crate::guard::{GuardContext, GuardViolation, GuardedInput, GuardedOutput};
pub type InputSanitizer =
dyn Fn(&mut GuardedInput, &GuardViolation, &GuardContext) + Send + Sync + 'static;
pub type OutputSanitizer =
dyn Fn(&mut GuardedOutput, &GuardViolation, &GuardContext) + Send + Sync + 'static;
pub type SharedInputSanitizer = Arc<InputSanitizer>;
pub type SharedOutputSanitizer = Arc<OutputSanitizer>;
pub fn default_input_sanitizer() -> SharedInputSanitizer {
Arc::new(redact_input_payload)
}
pub fn default_output_sanitizer() -> SharedOutputSanitizer {
Arc::new(redact_output_payload)
}
pub fn redact_input_payload(
input: &mut GuardedInput,
_violation: &GuardViolation,
_context: &GuardContext,
) {
input.redact_all();
}
pub fn redact_output_payload(
output: &mut GuardedOutput,
_violation: &GuardViolation,
_context: &GuardContext,
) {
output.redact_all();
}
pub fn redact_output_text_only_payload(
output: &mut GuardedOutput,
_violation: &GuardViolation,
_context: &GuardContext,
) {
output.redact_text_only();
}
pub fn noop_input_payload(
_input: &mut GuardedInput,
_violation: &GuardViolation,
_context: &GuardContext,
) {
}
pub fn noop_output_payload(
_output: &mut GuardedOutput,
_violation: &GuardViolation,
_context: &GuardContext,
) {
}
pub fn noop_input_sanitizer() -> SharedInputSanitizer {
Arc::new(noop_input_payload)
}
pub fn noop_output_sanitizer() -> SharedOutputSanitizer {
Arc::new(noop_output_payload)
}
pub fn redact_output_text_only_sanitizer() -> SharedOutputSanitizer {
Arc::new(redact_output_text_only_payload)
}