anidb_api/http/models/common/
error.rs

1use 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}