pixelast 0.1.0

A simple Pixela client.
Documentation
use super::PixelaClientError;

use serde_json;
use failure::Error;

#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct ApiRequestResult {
    pub message: String,
    pub is_success: bool,
}

pub fn build_result(json: &str) -> Result<(), Error> {
    let res: ApiRequestResult = serde_json::from_str(&json)?;

    if !res.is_success {
        return Err(PixelaClientError::RequestNotSuccess(res.message).into());
    }

    Ok(())
}

#[cfg(test)]
mod response_test {
    use super::*;

    #[test]
    fn build_result_is_success_test() {
        let body = r#"{"message":"success message","isSuccess":true}"#;
        let res = build_result(&body);

        if let Err(e) = res {
            panic!("failed build result. {}", e);
        };
    }

    #[test]
    fn build_result_is_not_success_test() {
        let body = r#"{"message":"failed message","isSuccess":false}"#;
        let res = build_result(&body);

        if let Ok(_) = res {
            panic!("not failed.");
        };
    }

    #[test]
    fn build_result_is_not_json_body_test() {
        let body = "not json body";
        let res = build_result(&body);

        if let Ok(_) = res {
            panic!("not failed.");
        };
    }
}