k8s_openapi_codegen_common/swagger20/
paths.rs

1/// The value of an `"x-kubernetes-action"` annotation on an operation.
2#[derive(Clone, Copy, Debug, Eq, PartialEq)]
3pub enum KubernetesAction {
4    Connect,
5    Delete,
6    DeleteCollection,
7    Get,
8    List,
9    Patch,
10    Post,
11    Proxy,
12    Put,
13    Watch,
14    WatchList,
15}
16
17#[cfg(feature = "serde")]
18#[allow(clippy::use_self)]
19impl<'de> serde::Deserialize<'de> for KubernetesAction {
20    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
21        struct Visitor;
22
23        impl serde::de::Visitor<'_> for Visitor {
24            type Value = KubernetesAction;
25
26            fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
27                f.write_str("x-kubernetes-action")
28            }
29
30            fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: serde::de::Error {
31                Ok(match v {
32                    "connect" => KubernetesAction::Connect,
33                    "delete" => KubernetesAction::Delete,
34                    "deletecollection" => KubernetesAction::DeleteCollection,
35                    "get" => KubernetesAction::Get,
36                    "list" => KubernetesAction::List,
37                    "patch" => KubernetesAction::Patch,
38                    "post" => KubernetesAction::Post,
39                    "proxy" => KubernetesAction::Proxy,
40                    "put" => KubernetesAction::Put,
41                    "watch" => KubernetesAction::Watch,
42                    "watchlist" => KubernetesAction::WatchList,
43                    v => return Err(serde::de::Error::invalid_value(serde::de::Unexpected::Str(v), &self)),
44                })
45            }
46        }
47
48        deserializer.deserialize_str(Visitor)
49    }
50}
51
52/// An API operation.
53#[derive(Clone, Debug)]
54pub struct Operation {
55    pub id: String,
56    pub kubernetes_action: Option<KubernetesAction>,
57    pub kubernetes_group_kind_version: Option<super::KubernetesGroupKindVersion>,
58    pub path: Path,
59}
60
61/// The path of an API operation.
62#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
63#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
64pub struct Path(pub String);
65
66impl std::ops::Deref for Path {
67    type Target = str;
68
69    fn deref(&self) -> &Self::Target {
70        &self.0
71    }
72}
73
74impl std::fmt::Display for Path {
75    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
76        self.0.fmt(f)
77    }
78}