1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
use crate::elevation::error::Error;
use serde::{Serialize, Deserialize};
#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)]
pub enum Status {
#[serde(alias = "INVALID_REQUEST")]
InvalidRequest,
#[serde(alias = "OK")]
Ok,
#[serde(alias = "OVER_DAILY_LIMIT")]
OverDailyLimit,
#[serde(alias = "OVER_QUERY_LIMIT")]
OverQueryLimit,
#[serde(alias = "REQUEST_DENIED")]
RequestDenied,
#[serde(alias = "UNKNOWN_ERROR")]
UnknownError,
}
impl std::convert::From<&Status> for String {
fn from(status: &Status) -> String {
match status {
Status::InvalidRequest => String::from("INVALID_REQUEST"),
Status::Ok => String::from("OK"),
Status::OverDailyLimit => String::from("OVER_DAILY_LIMIT"),
Status::OverQueryLimit => String::from("OVER_QUERY_LIMIT"),
Status::RequestDenied => String::from("REQUEST_DENIED"),
Status::UnknownError => String::from("UNKNOWN_ERROR"),
}
}
}
impl std::convert::TryFrom<&str> for Status {
type Error = crate::elevation::error::Error;
fn try_from(status: &str) -> Result<Status, Error> {
match status {
"INVALID_REQUEST" => Ok(Status::InvalidRequest),
"OK" => Ok(Status::Ok),
"OVER_DAILY_LIMIT" => Ok(Status::OverDailyLimit),
"OVER_QUERY_LIMIT" => Ok(Status::OverQueryLimit),
"REQUEST_DENIED" => Ok(Status::RequestDenied),
"UNKNOWN_ERROR" => Ok(Status::UnknownError),
_ => Err(Error::InvalidStatusCode(status.to_string())),
}
}
}
impl std::default::Default for Status {
fn default() -> Self {
Status::Ok
}
}
impl std::fmt::Display for Status {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Status::InvalidRequest => write!(f, "Invalid Request"),
Status::Ok => write!(f, "OK"),
Status::OverDailyLimit => write!(f, "Over Daily Limit"),
Status::OverQueryLimit => write!(f, "Over Query Limit"),
Status::RequestDenied => write!(f, "Request Denied"),
Status::UnknownError => write!(f, "Unknown Error"),
}
}
}