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