api_client_framework/
lib.rs1mod async_client;
4mod endpoint;
5
6#[cfg(feature = "blockscout")]
9pub mod blockscout;
10
11pub use async_client::{HttpApiClient, HttpApiClientConfig};
12pub use endpoint::{serialize_query, Endpoint};
13
14pub use reqwest;
15pub use reqwest_middleware;
16pub use url;
17
18#[derive(Debug, thiserror::Error)]
21pub enum Error {
22 #[error("middleware error: {0}")]
23 Middleware(anyhow::Error),
24 #[error("request error: {0}")]
25 Request(#[from] reqwest::Error),
26 #[error("response deserialization failed: {0}")]
27 Deserialization(#[from] serde_path_to_error::Error<serde_json::Error>),
28 #[error("request returned with invalid status code: 404 - Not Found")]
29 NotFound,
30 #[error("request returned with invalid status code: {status_code} - {message}")]
31 InvalidStatusCode {
32 status_code: reqwest::StatusCode,
33 message: String,
34 },
35 #[error("{0:#?}")]
36 CustomError(anyhow::Error),
37}
38
39impl From<reqwest_middleware::Error> for Error {
40 fn from(value: reqwest_middleware::Error) -> Self {
41 match value {
42 reqwest_middleware::Error::Middleware(error) => Error::Middleware(error),
43 reqwest_middleware::Error::Reqwest(error) => Error::Request(error),
44 }
45 }
46}