anidb_api/http/models/common/
error.rs1use http::StatusCode;
2use serde::{Deserialize, Serialize};
3use thiserror::Error;
4
5#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
6pub struct ResponseError {
7 #[serde(rename = "id")]
8 #[serde(with = "http_serde::option::status_code")]
9 pub status: Option<StatusCode>,
10 #[serde(rename(deserialize = "$value"))]
11 pub text: Option<String>,
12}
13
14#[derive(Debug, Error)]
15pub enum ApiError {
16 #[error("Reqwest error: {0}")]
17 Reqwest(#[from] reqwest_middleware::Error),
18 #[error("HTTP error: {status} - {message}")]
19 HttpError { status: StatusCode, message: String },
20 #[error("URL parsing error: {0}")]
21 UrlParse(#[from] url::ParseError),
22 #[error("Deserialization error: {0}")]
23 Deserialize(#[from] serde_xml_rs::Error),
24 #[error("Parse error: {0}")]
25 Parse(String),
26 #[error("Unknown error")]
27 Unknown,
28}