1use http;
2use serde_json;
3use serde_qs;
4use reqwest;
5use std::io;
6use thiserror::Error;
7
8#[derive(Error, Debug)]
9pub enum Error {
10 #[error("{0}")]
11 Http(#[from] reqwest::Error),
12 #[error("{0}")]
13 Json(#[from] serde_json::error::Error),
14 #[error("{0}")]
15 Uri(#[from] http::uri::InvalidUri),
16 #[error("{0}")]
17 Io(#[from] io::Error),
18 #[error("{0}")]
19 QsError(#[from] serde_qs::Error),
20 #[error("{0}")]
21 HeaderError(#[from] reqwest::header::InvalidHeaderValue),
22 #[error("Response error {:?}", .errors)]
23 MercuryError { errors: ErrorMessage },
24 #[error("Other/Unknown")]
25 Unknown,
26}
27
28#[derive(Serialize, Deserialize, Debug)]
29pub struct ErrorResponse {
30 pub errors: ErrorMessage
31}
32
33#[derive(Serialize, Deserialize, Debug)]
34pub struct ErrorMessage {
35 pub message: String
36}