hostmeta
: Use thiserror
This commit is contained in:
parent
cef5e8c19b
commit
c427af8186
2 changed files with 26 additions and 5 deletions
|
@ -9,6 +9,7 @@ quick-xml = { version = "0.37.0", features = ["overlapped-lists", "serialize"] }
|
|||
reqwest = { version = "0.12.9", features = ["json", "stream"] }
|
||||
serde = { version = "1.0.214", features = ["derive"] }
|
||||
serde_json = "1.0.132"
|
||||
thiserror = "2.0.3"
|
||||
|
||||
[dev-dependencies]
|
||||
pretty_env_logger = "0.5.0"
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use serde::Deserialize;
|
||||
use thiserror::Error;
|
||||
|
||||
/// A resource descriptor object.
|
||||
///
|
||||
|
@ -477,19 +478,22 @@ impl ResourceDescriptor {
|
|||
}
|
||||
|
||||
/// Error occurred during [`ResourceDescriptor::discover`].
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Error)]
|
||||
pub enum ResourceDescriptorDiscoveryError {
|
||||
/// Manipulation of the provided base [`reqwest::Url`] failed.
|
||||
///
|
||||
/// See [reqwest::Url::set_scheme] for possible causes.
|
||||
#[error("manipulation of the provided URL failed")]
|
||||
UrlManipulation(()),
|
||||
|
||||
/// All attempts of fetching a resource descriptor document failed.
|
||||
#[error("fetchign the resource descriptor document failed")]
|
||||
Fetch(ResourceDescriptorDiscoveryFailures),
|
||||
}
|
||||
|
||||
/// Request errors occurred during [`ResourceDescriptor::discover`].
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Error)]
|
||||
#[error("all attempts of fetching the resource descriptor document failed")]
|
||||
pub struct ResourceDescriptorDiscoveryFailures {
|
||||
/// HTTPS XRD retrieval.
|
||||
pub https_xrd: GetXRDError,
|
||||
|
@ -511,30 +515,46 @@ pub struct ResourceDescriptorDiscoveryFailures {
|
|||
}
|
||||
|
||||
/// Error occurred during [`ResourceDescriptor::get_xrd`].
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Error)]
|
||||
pub enum GetXRDError {
|
||||
/// The HTTP request failed.
|
||||
#[error("the HTTP request failed")]
|
||||
Request(reqwest::Error),
|
||||
|
||||
/// The `Content-Type` header of the response is missing.
|
||||
#[error("the Content-Type header of the response is missing")]
|
||||
ContentTypeMissing,
|
||||
|
||||
/// The `Content-Type` header of the response is invalid.
|
||||
#[error("the Content-Type header of the response is invalid")]
|
||||
ContentTypeInvalid,
|
||||
/// The document failed to be read as text.
|
||||
|
||||
/// The document failed to be decoded as text.
|
||||
#[error("the document failed to be decoded as text")]
|
||||
Decode(reqwest::Error),
|
||||
|
||||
/// The document failed to be parsed as XML by [`quick_xml`].
|
||||
#[error("the document failed to be parsed as XML")]
|
||||
Parse(quick_xml::DeError),
|
||||
}
|
||||
|
||||
/// Error occurred during [`ResourceDescriptor::get_jrd`].
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Error)]
|
||||
pub enum GetJRDError {
|
||||
/// The HTTP request failed.
|
||||
#[error("the HTTP request failed")]
|
||||
Request(reqwest::Error),
|
||||
|
||||
/// The `Content-Type` header of the response is missing.
|
||||
#[error("the Content-Type header of the response is missing")]
|
||||
ContentTypeMissing,
|
||||
|
||||
/// The `Content-Type` header of the response is invalid.
|
||||
#[error("the Content-Type header of the response is invalid")]
|
||||
ContentTypeInvalid,
|
||||
|
||||
/// The document failed to be parsed as JSON by [`reqwest`].
|
||||
#[error("the document failed to be parsed as JSON")]
|
||||
Parse(reqwest::Error),
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue