Skip to main content

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

1// AUTO-GENERATED by crabka-protocol-codegen against a9ce3221537b8653448750697915607dc7936cf3. Do not edit.
2
3use 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/// Default JSON payload matching `Self::default()` for JVM oracle differential testing.
297/// Only includes fields valid for the given version.
298#[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}