Skip to main content

k8s_openapi/v1_36/api/authentication/v1/
token_review_spec.rs

1// Generated from definition io.k8s.api.authentication.v1.TokenReviewSpec
2
3/// TokenReviewSpec is a description of the token authentication request.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct TokenReviewSpec {
6    /// 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.
7    pub audiences: Option<std::vec::Vec<std::string::String>>,
8
9    /// token is the opaque bearer token.
10    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}