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.
2use 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}