scylla_cql/frame/response/
authenticate.rs

1use crate::frame::frame_errors::{
2    CqlAuthChallengeParseError, CqlAuthSuccessParseError, CqlAuthenticateParseError,
3};
4use crate::frame::types;
5
6// Implements Authenticate message.
7#[derive(Debug)]
8pub struct Authenticate {
9    pub authenticator_name: String,
10}
11
12impl Authenticate {
13    pub fn deserialize(buf: &mut &[u8]) -> Result<Self, CqlAuthenticateParseError> {
14        let authenticator_name = types::read_string(buf)
15            .map_err(CqlAuthenticateParseError::AuthNameParseError)?
16            .to_string();
17
18        Ok(Authenticate { authenticator_name })
19    }
20}
21
22#[derive(Debug)]
23pub struct AuthSuccess {
24    pub success_message: Option<Vec<u8>>,
25}
26
27impl AuthSuccess {
28    pub fn deserialize(buf: &mut &[u8]) -> Result<Self, CqlAuthSuccessParseError> {
29        let success_message = types::read_bytes_opt(buf)
30            .map_err(CqlAuthSuccessParseError::SuccessMessageParseError)?
31            .map(ToOwned::to_owned);
32
33        Ok(AuthSuccess { success_message })
34    }
35}
36
37#[derive(Debug)]
38pub struct AuthChallenge {
39    pub authenticate_message: Option<Vec<u8>>,
40}
41
42impl AuthChallenge {
43    pub fn deserialize(buf: &mut &[u8]) -> Result<Self, CqlAuthChallengeParseError> {
44        let authenticate_message = types::read_bytes_opt(buf)
45            .map_err(CqlAuthChallengeParseError::AuthMessageParseError)?
46            .map(|b| b.to_owned());
47
48        Ok(AuthChallenge {
49            authenticate_message,
50        })
51    }
52}