1use reqwest::StatusCode;
2use thiserror::Error;
3
4pub type Result<T> = core::result::Result<T, Error>;
5
6#[derive(Error, Debug)]
7pub enum Error {
8 #[error("request url:{url} error, statusCode:{status_code}, message:{message}")]
10 HttpError {
11 url: String,
12 status_code: StatusCode,
13 message: String,
14 },
15 #[error("errcode: {code}, errmsg: {message}, request_id: {request_id}")]
17 ApiError {
18 code: u64,
19 message: String,
20 request_id: String,
21 },
22 #[error("{0}")]
23 General(String),
24 #[error("empty fileds when update")]
26 EmptyFiledsUpdate,
27 #[error(transparent)]
28 Reqwest(#[from] reqwest::Error),
29 #[error(transparent)]
30 InvalidHeaderValue(#[from] reqwest::header::InvalidHeaderValue),
31 #[error(transparent)]
32 InvalidHeaderName(#[from] reqwest::header::InvalidHeaderName),
33 #[error(transparent)]
34 Serde(#[from] serde_json::Error),
35 #[error(transparent)]
36 EnvVar(#[from] std::env::VarError),
37 #[error(transparent)]
38 Decode(#[from] base64::DecodeError),
39}
40
41pub fn new_http_error(url: String, status_code: StatusCode, message: String) -> Error {
42 Error::HttpError {
43 url,
44 status_code,
45 message,
46 }
47}
48
49pub fn new_api_error(code: u64, message: String, request_id: String) -> Error {
50 Error::ApiError {
51 code,
52 message,
53 request_id,
54 }
55}