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 compact_string_len, get_compact_string_owned, get_string_owned,
8 put_compact_string, put_string, string_len,
9};
10use crate::primitives::string_bytes::{bytes_len, compact_bytes_len, get_bytes_owned, get_compact_bytes_owned, put_bytes, put_compact_bytes};
11use crate::tagged_fields::{read_tagged_fields, tagged_fields_len, WriteTaggedFields};
12use crate::{Decode, Encode, ProtocolError, UnknownTaggedFields};
13
14pub const API_KEY: i16 = 38;
15pub const MIN_VERSION: i16 = 1;
16pub const MAX_VERSION: i16 = 3;
17pub const FLEXIBLE_MIN: i16 = 2;
18
19#[inline]
20fn is_flexible(version: i16) -> bool { version >= FLEXIBLE_MIN }
21
22#[derive(Debug, Clone, PartialEq, Eq, Default)]
23pub struct CreateDelegationTokenResponse {
24 pub error_code: i16,
25 pub principal_type: String,
26 pub principal_name: String,
27 pub token_requester_principal_type: String,
28 pub token_requester_principal_name: String,
29 pub issue_timestamp_ms: i64,
30 pub expiry_timestamp_ms: i64,
31 pub max_timestamp_ms: i64,
32 pub token_id: String,
33 pub hmac: ::bytes::Bytes,
34 pub throttle_time_ms: i32,
35 pub unknown_tagged_fields: UnknownTaggedFields,
36}
37
38impl Encode for CreateDelegationTokenResponse {
39 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
40 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
41 return Err(ProtocolError::UnsupportedVersion { api_key: API_KEY, version });
42 }
43 let flex = is_flexible(version);
44 if version >= 0 { put_i16(buf, self.error_code) }
45 if version >= 0 { if flex { put_compact_string(buf, &self.principal_type) } else { put_string(buf, &self.principal_type) } }
46 if version >= 0 { if flex { put_compact_string(buf, &self.principal_name) } else { put_string(buf, &self.principal_name) } }
47 if version >= 3 { if flex { put_compact_string(buf, &self.token_requester_principal_type) } else { put_string(buf, &self.token_requester_principal_type) } }
48 if version >= 3 { if flex { put_compact_string(buf, &self.token_requester_principal_name) } else { put_string(buf, &self.token_requester_principal_name) } }
49 if version >= 0 { put_i64(buf, self.issue_timestamp_ms) }
50 if version >= 0 { put_i64(buf, self.expiry_timestamp_ms) }
51 if version >= 0 { put_i64(buf, self.max_timestamp_ms) }
52 if version >= 0 { if flex { put_compact_string(buf, &self.token_id) } else { put_string(buf, &self.token_id) } }
53 if version >= 0 { if flex { put_compact_bytes(buf, &self.hmac) } else { put_bytes(buf, &self.hmac) } }
54 if version >= 0 { put_i32(buf, self.throttle_time_ms) }
55 if flex {
56 let tagged = WriteTaggedFields::new();
57 tagged.write(buf, &self.unknown_tagged_fields);
58 }
59 Ok(())
60 }
61 fn encoded_len(&self, version: i16) -> usize {
62 let flex = is_flexible(version);
63 let mut n: usize = 0;
64 if version >= 0 { n += 2; }
65 if version >= 0 { n += if flex { compact_string_len(&self.principal_type) } else { string_len(&self.principal_type) }; }
66 if version >= 0 { n += if flex { compact_string_len(&self.principal_name) } else { string_len(&self.principal_name) }; }
67 if version >= 3 { n += if flex { compact_string_len(&self.token_requester_principal_type) } else { string_len(&self.token_requester_principal_type) }; }
68 if version >= 3 { n += if flex { compact_string_len(&self.token_requester_principal_name) } else { string_len(&self.token_requester_principal_name) }; }
69 if version >= 0 { n += 8; }
70 if version >= 0 { n += 8; }
71 if version >= 0 { n += 8; }
72 if version >= 0 { n += if flex { compact_string_len(&self.token_id) } else { string_len(&self.token_id) }; }
73 if version >= 0 { n += if flex { compact_bytes_len(&self.hmac) } else { bytes_len(&self.hmac) }; }
74 if version >= 0 { n += 4; }
75 if flex {
76 let known_pairs: Vec<(u32, usize)> = Vec::new();
77 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
78 }
79 n
80 }
81}
82
83impl<'de> Decode<'de> for CreateDelegationTokenResponse {
84 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
85 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
86 return Err(ProtocolError::UnsupportedVersion { api_key: API_KEY, version });
87 }
88 let flex = is_flexible(version);
89 let mut out = Self::default();
90 if version >= 0 { out.error_code = get_i16(buf)?; }
91 if version >= 0 { out.principal_type = if flex { get_compact_string_owned(buf)? } else { get_string_owned(buf)? }; }
92 if version >= 0 { out.principal_name = if flex { get_compact_string_owned(buf)? } else { get_string_owned(buf)? }; }
93 if version >= 3 { out.token_requester_principal_type = if flex { get_compact_string_owned(buf)? } else { get_string_owned(buf)? }; }
94 if version >= 3 { out.token_requester_principal_name = if flex { get_compact_string_owned(buf)? } else { get_string_owned(buf)? }; }
95 if version >= 0 { out.issue_timestamp_ms = get_i64(buf)?; }
96 if version >= 0 { out.expiry_timestamp_ms = get_i64(buf)?; }
97 if version >= 0 { out.max_timestamp_ms = get_i64(buf)?; }
98 if version >= 0 { out.token_id = if flex { get_compact_string_owned(buf)? } else { get_string_owned(buf)? }; }
99 if version >= 0 { out.hmac = if flex { get_compact_bytes_owned(buf)? } else { get_bytes_owned(buf)? }; }
100 if version >= 0 { out.throttle_time_ms = get_i32(buf)?; }
101 if flex {
102 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| {
103 Ok(false)
104 })?;
105 }
106 Ok(out)
107 }
108}
109
110#[must_use]
113#[allow(unused_comparisons)]
114pub fn default_json(version: i16) -> ::serde_json::Value {
115 let mut obj = ::serde_json::Map::new();
116 obj.insert("errorCode".to_string(), ::serde_json::json!(0));
117 obj.insert("principalType".to_string(), ::serde_json::Value::String(String::new()));
118 obj.insert("principalName".to_string(), ::serde_json::Value::String(String::new()));
119 if version >= 3 {
120 obj.insert("tokenRequesterPrincipalType".to_string(), ::serde_json::Value::String(String::new()));
121 }
122 if version >= 3 {
123 obj.insert("tokenRequesterPrincipalName".to_string(), ::serde_json::Value::String(String::new()));
124 }
125 obj.insert("issueTimestampMs".to_string(), ::serde_json::json!(0));
126 obj.insert("expiryTimestampMs".to_string(), ::serde_json::json!(0));
127 obj.insert("maxTimestampMs".to_string(), ::serde_json::json!(0));
128 obj.insert("tokenId".to_string(), ::serde_json::Value::String(String::new()));
129 obj.insert("hmac".to_string(), ::serde_json::Value::String(String::new()));
130 obj.insert("throttleTimeMs".to_string(), ::serde_json::json!(0));
131 ::serde_json::Value::Object(obj)
132}