inve_etcd/auth/
authenticate.rs1use 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}