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
use crate::error::SessionError;
use crate::mechanism::Authentication;
use crate::property::AnonymousToken;
use crate::session::Step::Done;
use crate::session::{SessionData, StepResult};
use std::io::Write;
#[derive(Copy, Clone, Debug)]
pub struct Anonymous;
impl Authentication for Anonymous {
fn step(
&mut self,
session: &mut SessionData,
_input: Option<&[u8]>,
writer: &mut dyn Write,
) -> StepResult {
if let Some(token) = session.get_property_or_callback::<AnonymousToken>()? {
let buf = token.as_bytes();
writer.write_all(buf)?;
Ok(Done(Some(buf.len())))
} else {
Err(SessionError::no_property::<AnonymousToken>())
}
}
}