xio_webclient 0.18.1

XIO web client
Documentation
use snafu::{Backtrace, Snafu};
use {reqwest, webapi, Result};

#[derive(Debug, Snafu)]
#[snafu(visibility(pub(crate)))]
pub enum Error {
    #[snafu(display("Server error: {}", message))]
    Server { message: String },

    #[snafu(display("Error from reqwest: {}", source))]
    Reqwest {
        source: reqwest::Error,
        backtrace: Backtrace,
    },
}

impl<T: Default + webapi::MayBeSkipped> AsResult<T>
    for webapi::Response<T>
{
    fn as_result(self) -> Result<T> {
        match self {
            webapi::Response::Ok { data } => Ok(data),
            webapi::Response::Error { message } => {
                Server { message }.fail()
            }
        }
    }
}

pub(crate) trait AsResult<T> {
    fn as_result(self) -> Result<T>;
}