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