tlsn_core/fixtures/
provider.rs1use std::ops::Range;
2
3use crate::transcript::{
4 encoding::{new_encoder, Encoder, EncoderSecret, EncodingProvider, EncodingProviderError},
5 Direction, Transcript,
6};
7
8pub struct FixtureEncodingProvider {
10 encoder: Box<dyn Encoder>,
11 transcript: Transcript,
12}
13
14impl FixtureEncodingProvider {
15 pub(crate) fn new(secret: &EncoderSecret, transcript: Transcript) -> Self {
17 Self {
18 encoder: Box::new(new_encoder(secret)),
19 transcript,
20 }
21 }
22}
23
24impl EncodingProvider for FixtureEncodingProvider {
25 fn provide_encoding(
26 &self,
27 direction: Direction,
28 range: Range<usize>,
29 dest: &mut Vec<u8>,
30 ) -> Result<(), EncodingProviderError> {
31 let transcript = match direction {
32 Direction::Sent => &self.transcript.sent(),
33 Direction::Received => &self.transcript.received(),
34 };
35
36 let data = transcript.get(range.clone()).ok_or(EncodingProviderError)?;
37 self.encoder.encode_data(direction, range, data, dest);
38
39 Ok(())
40 }
41}