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
pub use self::client::Client;
use self::response_info::ResponseInfo;
pub use self::server::Server;

pub mod client;
pub mod error;
mod response_info;
pub mod server;

pub type Response<T> = Result<T, ResponseError>;

#[derive(Debug)]
pub enum ResponseError {
    Client(String),
    Server(String),
}

impl std::fmt::Display for ResponseError {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
        match *self {
            ResponseError::Client(ref v) => write!(f, "Client error: {}", v),
            ResponseError::Server(ref v) => write!(f, "Server error: {}", v),
        }
    }
}

impl std::error::Error for ResponseError {
    fn description(&self) -> &str {
        match *self {
            ResponseError::Client(ref v) | ResponseError::Server(ref v) => v,
        }
    }

    fn cause(&self) -> Option<&dyn std::error::Error> {
        None
    }
}

const ERROR_CODE: i32 = -1;
const FAILURE_CODE: i32 = 0;
const SUCCESS_CODE: i32 = 1;