inve_etcd/auth/
authenticate.rs

1use crate::proto::etcdserverpb;
2use crate::ResponseHeader;
3
4#[derive(Debug, Clone)]
5pub struct AuthenticateRequest {
6    proto: crate::proto::etcdserverpb::AuthenticateRequest,
7}
8
9impl AuthenticateRequest {
10    pub fn new<N, P>(name: N, password: P) -> Self
11    where
12        N: Into<String>,
13        P: Into<String>,
14    {
15        let proto = etcdserverpb::AuthenticateRequest {
16            name: name.into(),
17            password: password.into(),
18        };
19        Self { proto }
20    }
21}
22
23impl From<etcdserverpb::AuthenticateRequest> for AuthenticateRequest {
24    fn from(proto: etcdserverpb::AuthenticateRequest) -> Self {
25        Self { proto }
26    }
27}
28
29impl Into<etcdserverpb::AuthenticateRequest> for AuthenticateRequest {
30    fn into(self) -> etcdserverpb::AuthenticateRequest {
31        self.proto
32    }
33}
34
35impl<N, P> From<(N, P)> for AuthenticateRequest
36where
37    N: Into<String>,
38    P: Into<String>,
39{
40    fn from((user, password): (N, P)) -> Self {
41        Self::new(user, password)
42    }
43}
44
45#[derive(Debug, Clone)]
46pub struct AuthenticateResponse {
47    pub header: ResponseHeader,
48    pub token: String,
49}
50
51impl From<etcdserverpb::AuthenticateResponse> for AuthenticateResponse {
52    fn from(proto: etcdserverpb::AuthenticateResponse) -> Self {
53        Self {
54            header: From::from(proto.header.expect("must fetch header")),
55            token: proto.token,
56        }
57    }
58}