1pub type Result<T> = ::std::result::Result<T, Error>;
5
6
7
8#[derive(Debug)]
10pub enum Error {
11
12 ApiError(ApiError),
14
15 UnexpectedResponse,
17
18 RequestFailed,
20}
21
22
23
24#[derive(Deserialize, Debug)]
26pub struct ApiError {
27
28 pub code: u16,
30
31 pub message: String,
33}
34
35
36
37
38#[cfg(test)]
39mod tests {
40 extern crate serde_json;
41
42 use super::*;
43
44 #[test]
45 fn deserialize_error_response() {
46 let json = r#"{
47 "code": 401,
48 "message": "API key is invalid"
49 }"#;
50 let parsed: ApiError = serde_json::from_str(json).unwrap();
51 assert_eq!(401, parsed.code);
52 assert_eq!("API key is invalid", parsed.message);
53 }
54}