linode_api/objects/v4/
error.rs1use http_api_client::http::StatusCode;
2use serde::{Deserialize, Serialize};
3use serde_enum_str::{Deserialize_enum_str, Serialize_enum_str};
4
5#[derive(Deserialize, Serialize, Debug, Clone)]
7pub struct Error {
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub field: Option<String>,
10 pub reason: ErrorReason,
11}
12
13#[derive(Deserialize_enum_str, Serialize_enum_str, Debug, Clone, PartialEq, Eq)]
15#[serde(rename_all = "snake_case")]
16pub enum ErrorReason {
17 #[serde(rename = "Invalid JSON")]
18 InvalidJson,
19 #[serde(rename = "Invalid Token")]
20 InvalidToken,
21 #[serde(rename = "Not found", alias = "Not Found")]
22 NotFound,
23 #[serde(other)]
24 Other(String),
25}
26impl ErrorReason {
27 pub fn http_status_code(&self) -> Option<StatusCode> {
28 match self {
29 ErrorReason::InvalidJson => Some(StatusCode::BAD_REQUEST),
30 ErrorReason::InvalidToken => Some(StatusCode::NOT_FOUND),
31 ErrorReason::NotFound => Some(StatusCode::UNAUTHORIZED),
32 ErrorReason::Other(_) => None,
33 }
34 }
35}