1use std::result;
2
3use reqwest::StatusCode;
4use thiserror::Error;
5
6pub type Result<T> = result::Result<T, ApiError>;
7
8#[derive(Debug, Error)]
9pub enum ApiError {
10 #[error("network error: {0}")]
11 Network(#[from] reqwest::Error),
12
13 #[error("invalid url: {0}")]
14 Url(#[from] url::ParseError),
15
16 #[error("invalid header value: {0}")]
17 InvalidHeader(#[from] reqwest::header::InvalidHeaderValue),
18
19 #[error("serialization error: {0}")]
20 Serde(#[from] serde_json::Error),
21
22 #[error("http {status}: {body}")]
23 Http { status: StatusCode, body: String },
24}