k8s_openapi/v1_32/api/authentication/v1/
token_review_status.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct TokenReviewStatus {
6 pub audiences: Option<Vec<String>>,
8
9 pub authenticated: Option<bool>,
11
12 pub error: Option<String>,
14
15 pub user: Option<crate::api::authentication::v1::UserInfo>,
17}
18
19impl crate::DeepMerge for TokenReviewStatus {
20 fn merge_from(&mut self, other: Self) {
21 crate::merge_strategies::list::atomic(&mut self.audiences, other.audiences);
22 crate::DeepMerge::merge_from(&mut self.authenticated, other.authenticated);
23 crate::DeepMerge::merge_from(&mut self.error, other.error);
24 crate::DeepMerge::merge_from(&mut self.user, other.user);
25 }
26}
27
28impl<'de> crate::serde::Deserialize<'de> for TokenReviewStatus {
29 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
30 #[allow(non_camel_case_types)]
31 enum Field {
32 Key_audiences,
33 Key_authenticated,
34 Key_error,
35 Key_user,
36 Other,
37 }
38
39 impl<'de> crate::serde::Deserialize<'de> for Field {
40 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
41 struct Visitor;
42
43 impl crate::serde::de::Visitor<'_> for Visitor {
44 type Value = Field;
45
46 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
47 f.write_str("field identifier")
48 }
49
50 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
51 Ok(match v {
52 "audiences" => Field::Key_audiences,
53 "authenticated" => Field::Key_authenticated,
54 "error" => Field::Key_error,
55 "user" => Field::Key_user,
56 _ => Field::Other,
57 })
58 }
59 }
60
61 deserializer.deserialize_identifier(Visitor)
62 }
63 }
64
65 struct Visitor;
66
67 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
68 type Value = TokenReviewStatus;
69
70 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
71 f.write_str("TokenReviewStatus")
72 }
73
74 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
75 let mut value_audiences: Option<Vec<String>> = None;
76 let mut value_authenticated: Option<bool> = None;
77 let mut value_error: Option<String> = None;
78 let mut value_user: Option<crate::api::authentication::v1::UserInfo> = None;
79
80 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
81 match key {
82 Field::Key_audiences => value_audiences = crate::serde::de::MapAccess::next_value(&mut map)?,
83 Field::Key_authenticated => value_authenticated = crate::serde::de::MapAccess::next_value(&mut map)?,
84 Field::Key_error => value_error = crate::serde::de::MapAccess::next_value(&mut map)?,
85 Field::Key_user => value_user = crate::serde::de::MapAccess::next_value(&mut map)?,
86 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
87 }
88 }
89
90 Ok(TokenReviewStatus {
91 audiences: value_audiences,
92 authenticated: value_authenticated,
93 error: value_error,
94 user: value_user,
95 })
96 }
97 }
98
99 deserializer.deserialize_struct(
100 "TokenReviewStatus",
101 &[
102 "audiences",
103 "authenticated",
104 "error",
105 "user",
106 ],
107 Visitor,
108 )
109 }
110}
111
112impl crate::serde::Serialize for TokenReviewStatus {
113 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
114 let mut state = serializer.serialize_struct(
115 "TokenReviewStatus",
116 self.audiences.as_ref().map_or(0, |_| 1) +
117 self.authenticated.as_ref().map_or(0, |_| 1) +
118 self.error.as_ref().map_or(0, |_| 1) +
119 self.user.as_ref().map_or(0, |_| 1),
120 )?;
121 if let Some(value) = &self.audiences {
122 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "audiences", value)?;
123 }
124 if let Some(value) = &self.authenticated {
125 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "authenticated", value)?;
126 }
127 if let Some(value) = &self.error {
128 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "error", value)?;
129 }
130 if let Some(value) = &self.user {
131 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "user", value)?;
132 }
133 crate::serde::ser::SerializeStruct::end(state)
134 }
135}
136
137#[cfg(feature = "schemars")]
138impl crate::schemars::JsonSchema for TokenReviewStatus {
139 fn schema_name() -> String {
140 "io.k8s.api.authentication.v1.TokenReviewStatus".to_owned()
141 }
142
143 fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
144 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
145 metadata: Some(Box::new(crate::schemars::schema::Metadata {
146 description: Some("TokenReviewStatus is the result of the token authentication request.".to_owned()),
147 ..Default::default()
148 })),
149 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Object))),
150 object: Some(Box::new(crate::schemars::schema::ObjectValidation {
151 properties: [
152 (
153 "audiences".to_owned(),
154 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
155 metadata: Some(Box::new(crate::schemars::schema::Metadata {
156 description: Some("Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is \"true\", the token is valid against the audience of the Kubernetes API server.".to_owned()),
157 ..Default::default()
158 })),
159 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Array))),
160 array: Some(Box::new(crate::schemars::schema::ArrayValidation {
161 items: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(
162 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
163 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
164 ..Default::default()
165 })
166 ))),
167 ..Default::default()
168 })),
169 ..Default::default()
170 }),
171 ),
172 (
173 "authenticated".to_owned(),
174 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
175 metadata: Some(Box::new(crate::schemars::schema::Metadata {
176 description: Some("Authenticated indicates that the token was associated with a known user.".to_owned()),
177 ..Default::default()
178 })),
179 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Boolean))),
180 ..Default::default()
181 }),
182 ),
183 (
184 "error".to_owned(),
185 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
186 metadata: Some(Box::new(crate::schemars::schema::Metadata {
187 description: Some("Error indicates that the token couldn't be checked".to_owned()),
188 ..Default::default()
189 })),
190 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
191 ..Default::default()
192 }),
193 ),
194 (
195 "user".to_owned(),
196 {
197 let mut schema_obj = __gen.subschema_for::<crate::api::authentication::v1::UserInfo>().into_object();
198 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
199 description: Some("User is the UserInfo associated with the provided token.".to_owned()),
200 ..Default::default()
201 }));
202 crate::schemars::schema::Schema::Object(schema_obj)
203 },
204 ),
205 ].into(),
206 ..Default::default()
207 })),
208 ..Default::default()
209 })
210 }
211}