datadog_api_client/datadogV1/model/
model_synthetics_api_test_failure_code.rs

1// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2// This product includes software developed at Datadog (https://www.datadoghq.com/).
3// Copyright 2019-Present Datadog, Inc.
4
5use serde::{Deserialize, Deserializer, Serialize, Serializer};
6
7#[non_exhaustive]
8#[derive(Clone, Debug, Eq, PartialEq)]
9pub enum SyntheticsApiTestFailureCode {
10    BODY_TOO_LARGE,
11    DENIED,
12    TOO_MANY_REDIRECTS,
13    AUTHENTICATION_ERROR,
14    DECRYPTION,
15    INVALID_CHAR_IN_HEADER,
16    HEADER_TOO_LARGE,
17    HEADERS_INCOMPATIBLE_CONTENT_LENGTH,
18    INVALID_REQUEST,
19    REQUIRES_UPDATE,
20    UNESCAPED_CHARACTERS_IN_REQUEST_PATH,
21    MALFORMED_RESPONSE,
22    INCORRECT_ASSERTION,
23    CONNREFUSED,
24    CONNRESET,
25    DNS,
26    HOSTUNREACH,
27    NETUNREACH,
28    TIMEOUT,
29    SSL,
30    OCSP,
31    INVALID_TEST,
32    TUNNEL,
33    WEBSOCKET,
34    UNKNOWN,
35    INTERNAL_ERROR,
36    UnparsedObject(crate::datadog::UnparsedObject),
37}
38
39impl ToString for SyntheticsApiTestFailureCode {
40    fn to_string(&self) -> String {
41        match self {
42            Self::BODY_TOO_LARGE => String::from("BODY_TOO_LARGE"),
43            Self::DENIED => String::from("DENIED"),
44            Self::TOO_MANY_REDIRECTS => String::from("TOO_MANY_REDIRECTS"),
45            Self::AUTHENTICATION_ERROR => String::from("AUTHENTICATION_ERROR"),
46            Self::DECRYPTION => String::from("DECRYPTION"),
47            Self::INVALID_CHAR_IN_HEADER => String::from("INVALID_CHAR_IN_HEADER"),
48            Self::HEADER_TOO_LARGE => String::from("HEADER_TOO_LARGE"),
49            Self::HEADERS_INCOMPATIBLE_CONTENT_LENGTH => {
50                String::from("HEADERS_INCOMPATIBLE_CONTENT_LENGTH")
51            }
52            Self::INVALID_REQUEST => String::from("INVALID_REQUEST"),
53            Self::REQUIRES_UPDATE => String::from("REQUIRES_UPDATE"),
54            Self::UNESCAPED_CHARACTERS_IN_REQUEST_PATH => {
55                String::from("UNESCAPED_CHARACTERS_IN_REQUEST_PATH")
56            }
57            Self::MALFORMED_RESPONSE => String::from("MALFORMED_RESPONSE"),
58            Self::INCORRECT_ASSERTION => String::from("INCORRECT_ASSERTION"),
59            Self::CONNREFUSED => String::from("CONNREFUSED"),
60            Self::CONNRESET => String::from("CONNRESET"),
61            Self::DNS => String::from("DNS"),
62            Self::HOSTUNREACH => String::from("HOSTUNREACH"),
63            Self::NETUNREACH => String::from("NETUNREACH"),
64            Self::TIMEOUT => String::from("TIMEOUT"),
65            Self::SSL => String::from("SSL"),
66            Self::OCSP => String::from("OCSP"),
67            Self::INVALID_TEST => String::from("INVALID_TEST"),
68            Self::TUNNEL => String::from("TUNNEL"),
69            Self::WEBSOCKET => String::from("WEBSOCKET"),
70            Self::UNKNOWN => String::from("UNKNOWN"),
71            Self::INTERNAL_ERROR => String::from("INTERNAL_ERROR"),
72            Self::UnparsedObject(v) => v.value.to_string(),
73        }
74    }
75}
76
77impl Serialize for SyntheticsApiTestFailureCode {
78    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
79    where
80        S: Serializer,
81    {
82        match self {
83            Self::UnparsedObject(v) => v.serialize(serializer),
84            _ => serializer.serialize_str(self.to_string().as_str()),
85        }
86    }
87}
88
89impl<'de> Deserialize<'de> for SyntheticsApiTestFailureCode {
90    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
91    where
92        D: Deserializer<'de>,
93    {
94        let s: String = String::deserialize(deserializer)?;
95        Ok(match s.as_str() {
96            "BODY_TOO_LARGE" => Self::BODY_TOO_LARGE,
97            "DENIED" => Self::DENIED,
98            "TOO_MANY_REDIRECTS" => Self::TOO_MANY_REDIRECTS,
99            "AUTHENTICATION_ERROR" => Self::AUTHENTICATION_ERROR,
100            "DECRYPTION" => Self::DECRYPTION,
101            "INVALID_CHAR_IN_HEADER" => Self::INVALID_CHAR_IN_HEADER,
102            "HEADER_TOO_LARGE" => Self::HEADER_TOO_LARGE,
103            "HEADERS_INCOMPATIBLE_CONTENT_LENGTH" => Self::HEADERS_INCOMPATIBLE_CONTENT_LENGTH,
104            "INVALID_REQUEST" => Self::INVALID_REQUEST,
105            "REQUIRES_UPDATE" => Self::REQUIRES_UPDATE,
106            "UNESCAPED_CHARACTERS_IN_REQUEST_PATH" => Self::UNESCAPED_CHARACTERS_IN_REQUEST_PATH,
107            "MALFORMED_RESPONSE" => Self::MALFORMED_RESPONSE,
108            "INCORRECT_ASSERTION" => Self::INCORRECT_ASSERTION,
109            "CONNREFUSED" => Self::CONNREFUSED,
110            "CONNRESET" => Self::CONNRESET,
111            "DNS" => Self::DNS,
112            "HOSTUNREACH" => Self::HOSTUNREACH,
113            "NETUNREACH" => Self::NETUNREACH,
114            "TIMEOUT" => Self::TIMEOUT,
115            "SSL" => Self::SSL,
116            "OCSP" => Self::OCSP,
117            "INVALID_TEST" => Self::INVALID_TEST,
118            "TUNNEL" => Self::TUNNEL,
119            "WEBSOCKET" => Self::WEBSOCKET,
120            "UNKNOWN" => Self::UNKNOWN,
121            "INTERNAL_ERROR" => Self::INTERNAL_ERROR,
122            _ => Self::UnparsedObject(crate::datadog::UnparsedObject {
123                value: serde_json::Value::String(s.into()),
124            }),
125        })
126    }
127}