Skip to main content

ploidy_util/
error.rs

1/// Transport-level error types.
2#[derive(Debug, thiserror::Error)]
3pub enum Error {
4    /// Network or connection error.
5    #[error("Network error")]
6    Network(#[from] reqwest::Error),
7
8    /// Invalid JSON in request or response.
9    #[error("Malformed JSON")]
10    Json(#[from] JsonError),
11
12    /// Invalid URL.
13    #[error("Malformed URL")]
14    Url(#[from] url::ParseError),
15
16    /// URL can't be used as a base.
17    #[error("Can't use URL as base URL")]
18    UrlCannotBeABase,
19
20    /// Invalid query parameter.
21    #[error("Invalid query parameter")]
22    QueryParam(#[from] crate::QueryParamError),
23
24    /// Invalid HTTP header name.
25    #[error("Invalid header name")]
26    BadHeaderName(#[source] http::Error),
27
28    /// Invalid HTTP header value.
29    #[error("Invalid value for header `{0}`")]
30    BadHeaderValue(http::HeaderName, #[source] http::Error),
31}
32
33/// Invalid or unexpected JSON, with or without a path
34/// to the unexpected section.
35#[derive(Debug, thiserror::Error)]
36pub enum JsonError {
37    #[error(transparent)]
38    Json(#[from] serde_json::Error),
39    #[error(transparent)]
40    JsonWithPath(#[from] serde_path_to_error::Error<serde_json::Error>),
41}