Skip to main content

crabka_protocol/opt/rustwide/workdir/generated/
CreateDelegationTokenResponse.borrowed.rs

1// AUTO-GENERATED by crabka-protocol-codegen against a9ce3221537b8653448750697915607dc7936cf3. Do not edit.
2
3use bytes::{BufMut, Bytes};
4
5use crate::primitives::fixed::{get_i16, get_i32, get_i64, put_i16, put_i32, put_i64};
6use crate::primitives::string_bytes::{
7    compact_string_len, put_compact_string, put_string, string_len,
8};
9use crate::primitives::string_bytes::{put_bytes, put_compact_bytes};
10use crate::primitives::string_bytes_borrowed::{get_bytes_borrowed, get_compact_bytes_borrowed};
11use crate::primitives::string_bytes_borrowed::{get_compact_string_borrowed, get_string_borrowed};
12use crate::tagged_fields::{WriteTaggedFields, read_tagged_fields, tagged_fields_len};
13use crate::{DecodeBorrow, Encode, ProtocolError, UnknownTaggedFields};
14
15pub const API_KEY: i16 = 38;
16pub const MIN_VERSION: i16 = 1;
17pub const MAX_VERSION: i16 = 3;
18pub const FLEXIBLE_MIN: i16 = 2;
19
20#[inline]
21fn is_flexible(version: i16) -> bool {
22    version >= FLEXIBLE_MIN
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Default)]
26pub struct CreateDelegationTokenResponse<'a> {
27    pub error_code: i16,
28    pub principal_type: &'a str,
29    pub principal_name: &'a str,
30    pub token_requester_principal_type: &'a str,
31    pub token_requester_principal_name: &'a str,
32    pub issue_timestamp_ms: i64,
33    pub expiry_timestamp_ms: i64,
34    pub max_timestamp_ms: i64,
35    pub token_id: &'a str,
36    pub hmac: &'a [u8],
37    pub throttle_time_ms: i32,
38    pub unknown_tagged_fields: UnknownTaggedFields,
39}
40impl CreateDelegationTokenResponse<'_> {
41    pub fn to_owned(
42        &self,
43    ) -> crate::owned::create_delegation_token_response::CreateDelegationTokenResponse {
44        crate::owned::create_delegation_token_response::CreateDelegationTokenResponse {
45            error_code: (self.error_code),
46            principal_type: (self.principal_type).to_string(),
47            principal_name: (self.principal_name).to_string(),
48            token_requester_principal_type: (self.token_requester_principal_type).to_string(),
49            token_requester_principal_name: (self.token_requester_principal_name).to_string(),
50            issue_timestamp_ms: (self.issue_timestamp_ms),
51            expiry_timestamp_ms: (self.expiry_timestamp_ms),
52            max_timestamp_ms: (self.max_timestamp_ms),
53            token_id: (self.token_id).to_string(),
54            hmac: Bytes::copy_from_slice(self.hmac),
55            throttle_time_ms: (self.throttle_time_ms),
56            unknown_tagged_fields: self.unknown_tagged_fields.clone(),
57        }
58    }
59}
60impl Encode for CreateDelegationTokenResponse<'_> {
61    fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
62        if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
63            return Err(ProtocolError::UnsupportedVersion {
64                api_key: API_KEY,
65                version,
66            });
67        }
68        let flex = is_flexible(version);
69        if version >= 0 {
70            put_i16(buf, self.error_code);
71        }
72        if version >= 0 {
73            if flex {
74                put_compact_string(buf, self.principal_type);
75            } else {
76                put_string(buf, self.principal_type);
77            }
78        }
79        if version >= 0 {
80            if flex {
81                put_compact_string(buf, self.principal_name);
82            } else {
83                put_string(buf, self.principal_name);
84            }
85        }
86        if version >= 3 {
87            if flex {
88                put_compact_string(buf, self.token_requester_principal_type);
89            } else {
90                put_string(buf, self.token_requester_principal_type);
91            }
92        }
93        if version >= 3 {
94            if flex {
95                put_compact_string(buf, self.token_requester_principal_name);
96            } else {
97                put_string(buf, self.token_requester_principal_name);
98            }
99        }
100        if version >= 0 {
101            put_i64(buf, self.issue_timestamp_ms);
102        }
103        if version >= 0 {
104            put_i64(buf, self.expiry_timestamp_ms);
105        }
106        if version >= 0 {
107            put_i64(buf, self.max_timestamp_ms);
108        }
109        if version >= 0 {
110            if flex {
111                put_compact_string(buf, self.token_id);
112            } else {
113                put_string(buf, self.token_id);
114            }
115        }
116        if version >= 0 {
117            if flex {
118                put_compact_bytes(buf, self.hmac);
119            } else {
120                put_bytes(buf, self.hmac);
121            }
122        }
123        if version >= 0 {
124            put_i32(buf, self.throttle_time_ms);
125        }
126        if flex {
127            let tagged = WriteTaggedFields::new();
128            tagged.write(buf, &self.unknown_tagged_fields);
129        }
130        Ok(())
131    }
132    fn encoded_len(&self, version: i16) -> usize {
133        let flex = is_flexible(version);
134        let mut n: usize = 0;
135        if version >= 0 {
136            n += 2;
137        }
138        if version >= 0 {
139            n += if flex {
140                compact_string_len(self.principal_type)
141            } else {
142                string_len(self.principal_type)
143            };
144        }
145        if version >= 0 {
146            n += if flex {
147                compact_string_len(self.principal_name)
148            } else {
149                string_len(self.principal_name)
150            };
151        }
152        if version >= 3 {
153            n += if flex {
154                compact_string_len(self.token_requester_principal_type)
155            } else {
156                string_len(self.token_requester_principal_type)
157            };
158        }
159        if version >= 3 {
160            n += if flex {
161                compact_string_len(self.token_requester_principal_name)
162            } else {
163                string_len(self.token_requester_principal_name)
164            };
165        }
166        if version >= 0 {
167            n += 8;
168        }
169        if version >= 0 {
170            n += 8;
171        }
172        if version >= 0 {
173            n += 8;
174        }
175        if version >= 0 {
176            n += if flex {
177                compact_string_len(self.token_id)
178            } else {
179                string_len(self.token_id)
180            };
181        }
182        if version >= 0 {
183            n += if flex {
184                crate::primitives::varint::uvarint_len(
185                    u32::try_from((self.hmac).len() + 1).unwrap(),
186                ) + (self.hmac).len()
187            } else {
188                4 + (self.hmac).len()
189            };
190        }
191        if version >= 0 {
192            n += 4;
193        }
194        if flex {
195            let known_pairs: Vec<(u32, usize)> = Vec::new();
196            n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
197        }
198        n
199    }
200}
201impl<'de> DecodeBorrow<'de> for CreateDelegationTokenResponse<'de> {
202    fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
203        if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
204            return Err(ProtocolError::UnsupportedVersion {
205                api_key: API_KEY,
206                version,
207            });
208        }
209        let flex = is_flexible(version);
210        let mut out = Self::default();
211        if version >= 0 {
212            out.error_code = get_i16(buf)?;
213        }
214        if version >= 0 {
215            out.principal_type = if flex {
216                get_compact_string_borrowed(buf)?
217            } else {
218                get_string_borrowed(buf)?
219            };
220        }
221        if version >= 0 {
222            out.principal_name = if flex {
223                get_compact_string_borrowed(buf)?
224            } else {
225                get_string_borrowed(buf)?
226            };
227        }
228        if version >= 3 {
229            out.token_requester_principal_type = if flex {
230                get_compact_string_borrowed(buf)?
231            } else {
232                get_string_borrowed(buf)?
233            };
234        }
235        if version >= 3 {
236            out.token_requester_principal_name = if flex {
237                get_compact_string_borrowed(buf)?
238            } else {
239                get_string_borrowed(buf)?
240            };
241        }
242        if version >= 0 {
243            out.issue_timestamp_ms = get_i64(buf)?;
244        }
245        if version >= 0 {
246            out.expiry_timestamp_ms = get_i64(buf)?;
247        }
248        if version >= 0 {
249            out.max_timestamp_ms = get_i64(buf)?;
250        }
251        if version >= 0 {
252            out.token_id = if flex {
253                get_compact_string_borrowed(buf)?
254            } else {
255                get_string_borrowed(buf)?
256            };
257        }
258        if version >= 0 {
259            out.hmac = if flex {
260                get_compact_bytes_borrowed(buf)?
261            } else {
262                get_bytes_borrowed(buf)?
263            };
264        }
265        if version >= 0 {
266            out.throttle_time_ms = get_i32(buf)?;
267        }
268        if flex {
269            out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
270        }
271        Ok(out)
272    }
273}
274#[cfg(test)]
275impl CreateDelegationTokenResponse<'_> {
276    #[must_use]
277    pub fn populated(version: i16) -> Self {
278        let mut m = Self::default();
279        if version >= 0 {
280            m.error_code = 1i16;
281        }
282        if version >= 0 {
283            m.principal_type = "x";
284        }
285        if version >= 0 {
286            m.principal_name = "x";
287        }
288        if version >= 3 {
289            m.token_requester_principal_type = "x";
290        }
291        if version >= 3 {
292            m.token_requester_principal_name = "x";
293        }
294        if version >= 0 {
295            m.issue_timestamp_ms = 1i64;
296        }
297        if version >= 0 {
298            m.expiry_timestamp_ms = 1i64;
299        }
300        if version >= 0 {
301            m.max_timestamp_ms = 1i64;
302        }
303        if version >= 0 {
304            m.token_id = "x";
305        }
306        if version >= 0 {
307            m.hmac = &b"x"[..];
308        }
309        if version >= 0 {
310            m.throttle_time_ms = 1i32;
311        }
312        m
313    }
314}