pub struct RecordingScrubber<'a> { /* private fields */ }
Expand description
A utility that performs data scrubbing on compressed Replay recording payloads.
§Example
use relay_replays::recording::RecordingScrubber;
use relay_pii::PiiConfig;
// Obtain a PII config from the project state or create one on-demand.
let pii_config = PiiConfig::default();
let mut scrubber = RecordingScrubber::new(1_000_000, Some(&pii_config), None);
let payload = b"{}\n[]";
let result = scrubber.process_recording(payload.as_slice());
Implementations§
source§impl<'a> RecordingScrubber<'a>
impl<'a> RecordingScrubber<'a>
sourcepub fn new(
limit: usize,
config1: Option<&'a PiiConfig>,
config2: Option<&'a PiiConfig>,
) -> Self
pub fn new( limit: usize, config1: Option<&'a PiiConfig>, config2: Option<&'a PiiConfig>, ) -> Self
Creates a new RecordingScrubber
from PII configs.
limit
controls the maximum size in bytes during decompression. This function returns an
Err
if decompressed contents exceed the limit. The two optional configs to be passed here
are from data scrubbing settings and from the dedicated PII config.
§Performance
The passed PII configs are compiled by this constructor if their compiled version is not yet cached. This can be a CPU-intensive process and should be called from a blocking context.
sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true
if both configs are empty and no scrubbing would occur.
sourcepub fn process_recording(
&mut self,
bytes: &[u8],
) -> Result<Vec<u8>, ParseRecordingError>
pub fn process_recording( &mut self, bytes: &[u8], ) -> Result<Vec<u8>, ParseRecordingError>
Parses a replay recording payload and applies data scrubbers.
§Compression
The recording bytes
passed to this function can be a raw recording payload or compressed
with zlib. The result is always compressed, regardless of the input.
During decompression, the scrubber applies a limit
. If the decompressed buffer exceeds the
configured size, an Err
is returned. This does not apply to decompressed payloads.
§Errors
This function requires a full recording payload including headers and body. This function will return errors if:
- Headers or the body are missing.
- Headers and the body are separated by exactly one UNIX newline (
\n
). - The payload size exceeds the configured
limit
of the scrubber after decompression. - On errors during decompression or JSON parsing.