k8s_openapi/v1_36/api/authentication/v1/
token_review_spec.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct TokenReviewSpec {
6 pub audiences: Option<std::vec::Vec<std::string::String>>,
8
9 pub token: std::string::String,
11}
12
13impl crate::DeepMerge for TokenReviewSpec {
14 fn merge_from(&mut self, other: Self) {
15 crate::merge_strategies::list::atomic(&mut self.audiences, other.audiences);
16 crate::DeepMerge::merge_from(&mut self.token, other.token);
17 }
18}
19
20impl<'de> crate::serde::Deserialize<'de> for TokenReviewSpec {
21 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
22 #[allow(non_camel_case_types)]
23 enum Field {
24 Key_audiences,
25 Key_token,
26 Other,
27 }
28
29 impl<'de> crate::serde::Deserialize<'de> for Field {
30 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
31 struct Visitor;
32
33 impl crate::serde::de::Visitor<'_> for Visitor {
34 type Value = Field;
35
36 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
37 f.write_str("field identifier")
38 }
39
40 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
41 Ok(match v {
42 "audiences" => Field::Key_audiences,
43 "token" => Field::Key_token,
44 _ => Field::Other,
45 })
46 }
47 }
48
49 deserializer.deserialize_identifier(Visitor)
50 }
51 }
52
53 struct Visitor;
54
55 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
56 type Value = TokenReviewSpec;
57
58 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
59 f.write_str("TokenReviewSpec")
60 }
61
62 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
63 let mut value_audiences: Option<std::vec::Vec<std::string::String>> = None;
64 let mut value_token: Option<std::string::String> = None;
65
66 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
67 match key {
68 Field::Key_audiences => value_audiences = crate::serde::de::MapAccess::next_value(&mut map)?,
69 Field::Key_token => value_token = crate::serde::de::MapAccess::next_value(&mut map)?,
70 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
71 }
72 }
73
74 Ok(TokenReviewSpec {
75 audiences: value_audiences,
76 token: value_token.unwrap_or_default(),
77 })
78 }
79 }
80
81 deserializer.deserialize_struct(
82 "TokenReviewSpec",
83 &[
84 "audiences",
85 "token",
86 ],
87 Visitor,
88 )
89 }
90}
91
92impl crate::serde::Serialize for TokenReviewSpec {
93 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
94 let mut state = serializer.serialize_struct(
95 "TokenReviewSpec",
96 1 +
97 self.audiences.as_ref().map_or(0, |_| 1),
98 )?;
99 if let Some(value) = &self.audiences {
100 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "audiences", value)?;
101 }
102 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "token", &self.token)?;
103 crate::serde::ser::SerializeStruct::end(state)
104 }
105}
106
107#[cfg(feature = "schemars")]
108impl crate::schemars::JsonSchema for TokenReviewSpec {
109 fn schema_name() -> std::borrow::Cow<'static, str> {
110 "io.k8s.api.authentication.v1.TokenReviewSpec".into()
111 }
112
113 fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
114 crate::schemars::json_schema!({
115 "description": "TokenReviewSpec is a description of the token authentication request.",
116 "type": "object",
117 "properties": {
118 "audiences": {
119 "description": "audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.",
120 "type": "array",
121 "items": {
122 "type": "string",
123 },
124 },
125 "token": {
126 "description": "token is the opaque bearer token.",
127 "type": "string",
128 },
129 },
130 "required": [
131 "token",
132 ],
133 })
134 }
135}
136
137#[cfg(feature = "schemars08")]
138impl crate::schemars08::JsonSchema for TokenReviewSpec {
139 fn schema_name() -> std::string::String {
140 "io.k8s.api.authentication.v1.TokenReviewSpec".into()
141 }
142
143 fn json_schema(__gen: &mut crate::schemars08::gen::SchemaGenerator) -> crate::schemars08::schema::Schema {
144 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
145 metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
146 description: Some("TokenReviewSpec is a description of the token authentication request.".into()),
147 ..Default::default()
148 })),
149 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::Object))),
150 object: Some(std::boxed::Box::new(crate::schemars08::schema::ObjectValidation {
151 properties: [
152 (
153 "audiences".into(),
154 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
155 metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
156 description: Some("audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.".into()),
157 ..Default::default()
158 })),
159 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::Array))),
160 array: Some(std::boxed::Box::new(crate::schemars08::schema::ArrayValidation {
161 items: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(
162 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
163 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::String))),
164 ..Default::default()
165 })
166 ))),
167 ..Default::default()
168 })),
169 ..Default::default()
170 }),
171 ),
172 (
173 "token".into(),
174 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
175 metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
176 description: Some("token is the opaque bearer token.".into()),
177 ..Default::default()
178 })),
179 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::String))),
180 ..Default::default()
181 }),
182 ),
183 ].into(),
184 required: [
185 "token".into(),
186 ].into(),
187 ..Default::default()
188 })),
189 ..Default::default()
190 })
191 }
192}