crabka_protocol/opt/rustwide/workdir/generated/
CreateDelegationTokenResponse.borrowed.rs1use 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}