1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use crate::requests::Result;
use crate::secrecy::{ExposeSecret, Secret};
#[cfg(feature = "fuzz")]
use arbitrary::Arbitrary;
use std::io::{Read, Write};
#[cfg_attr(feature = "fuzz", derive(Arbitrary))]
#[allow(missing_debug_implementations)]
pub struct RequestAuth {
pub buffer: Secret<Vec<u8>>,
}
impl RequestAuth {
pub fn new(bytes: Vec<u8>) -> Self {
RequestAuth {
buffer: Secret::new(bytes),
}
}
pub(super) fn read_from_stream(mut stream: &mut impl Read, len: usize) -> Result<RequestAuth> {
let buffer = get_from_stream!(stream; len);
Ok(RequestAuth {
buffer: Secret::new(buffer),
})
}
pub(super) fn write_to_stream(&self, stream: &mut impl Write) -> Result<()> {
stream.write_all(&self.buffer.expose_secret())?;
Ok(())
}
}