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    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/// Default JSON payload matching `Self::default()` for JVM oracle differential testing.
111/// Only includes fields valid for the given version.
112#[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}