longbridge_httpcli/
error.rs

1use reqwest::StatusCode;
2
3use crate::qs::QsError;
4
5/// Http client error type
6#[derive(Debug, thiserror::Error)]
7pub enum HttpClientError {
8    /// Invalid request method
9    #[error("invalid request method")]
10    InvalidRequestMethod,
11
12    /// Invalid api key
13    #[error("invalid api key")]
14    InvalidApiKey,
15
16    /// Invalid access token
17    #[error("invalid access token")]
18    InvalidAccessToken,
19
20    /// Missing environment variable
21    #[error("missing environment variable: {name}")]
22    MissingEnvVar {
23        /// Variable name
24        name: &'static str,
25    },
26
27    /// Unexpected response
28    #[error("unexpected response")]
29    UnexpectedResponse,
30
31    /// Request timeout
32    #[error("request timeout")]
33    RequestTimeout,
34
35    /// OpenAPI error
36    #[error("openapi error: code={code}: {message}")]
37    OpenApi {
38        /// Error code
39        code: i32,
40        /// Error message
41        message: String,
42        /// Trace id
43        trace_id: String,
44    },
45
46    /// Deserialize response body
47    #[error("deserialize response body error: {0}")]
48    DeserializeResponseBody(String),
49
50    /// Serialize request body
51    #[error("serialize request body error: {0}")]
52    SerializeRequestBody(String),
53
54    /// Serialize query string error
55    #[error("serialize query string error: {0}")]
56    SerializeQueryString(#[from] QsError),
57
58    /// Bad status
59    #[error("status error: {0}")]
60    BadStatus(StatusCode),
61
62    /// Http error
63    #[error(transparent)]
64    Http(#[from] reqwest::Error),
65}
66
67/// Http client result type
68pub type HttpClientResult<T, E = HttpClientError> = std::result::Result<T, E>;