1use serde::Deserialize;
2use thiserror::Error;
3
4#[derive(Debug, Deserialize)]
5#[serde(untagged)]
6pub(crate) enum ApiResult<T> {
7 Ok { result: T },
8 Err { ok: bool, error: String },
9}
10
11impl<T> Into<Result<T, Error>> for ApiResult<T> {
12 fn into(self) -> Result<T, Error> {
13 match self {
14 ApiResult::Ok { result: v } => Ok(v),
15 ApiResult::Err { error: e, .. } => Err(Error::ApiError(e)),
16 }
17 }
18}
19
20#[derive(Error, Debug)]
21pub enum Error {
22 #[error("reqwest error: {0}")]
23 ReqwestError(#[from] reqwest::Error),
24 #[error("api error: {0}")]
25 ApiError(String),
26 #[error("io error: {0}")]
27 IoError(#[from] std::io::Error),
28}