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>;
}