tlsn_core/fixtures/
provider.rs

1use crate::transcript::{
2    encoding::{new_encoder, Encoder, EncoderSecret, EncodingProvider},
3    Direction, Idx, Transcript,
4};
5
6/// A encoding provider fixture.
7pub struct FixtureEncodingProvider {
8    encoder: Box<dyn Encoder>,
9    transcript: Transcript,
10}
11
12impl FixtureEncodingProvider {
13    /// Creates a new encoding provider fixture.
14    pub(crate) fn new(secret: &EncoderSecret, transcript: Transcript) -> Self {
15        Self {
16            encoder: Box::new(new_encoder(secret)),
17            transcript,
18        }
19    }
20}
21
22impl EncodingProvider for FixtureEncodingProvider {
23    fn provide_encoding(&self, direction: Direction, idx: &Idx) -> Option<Vec<u8>> {
24        let seq = self.transcript.get(direction, idx)?;
25        Some(self.encoder.encode_subsequence(direction, &seq))
26    }
27}