stac_io/
error.rs

1use thiserror::Error;
2
3/// Crate-specific error enum
4#[derive(Error, Debug)]
5#[non_exhaustive]
6pub enum Error {
7    /// Returned when unable to read a STAC value from a path.
8    #[error("{io}: {path}")]
9    FromPath {
10        /// The [std::io::Error]
11        #[source]
12        io: std::io::Error,
13
14        /// The path.
15        path: String,
16    },
17
18    /// [http::header::InvalidHeaderName]
19    #[error(transparent)]
20    InvalidHeaderName(#[from] http::header::InvalidHeaderName),
21
22    /// [http::header::InvalidHeaderValue]
23    #[error(transparent)]
24    InvalidHeaderValue(#[from] http::header::InvalidHeaderValue),
25
26    /// [http::method::InvalidMethod]
27    #[error(transparent)]
28    InvalidMethod(#[from] http::method::InvalidMethod),
29
30    /// [tokio::task::JoinError]
31    #[error(transparent)]
32    Join(#[from] tokio::task::JoinError),
33
34    /// [std::io::Error]
35    #[error(transparent)]
36    Io(#[from] std::io::Error),
37
38    #[cfg(feature = "store")]
39    #[error(transparent)]
40    /// [object_store::Error]
41    ObjectStore(#[from] object_store::Error),
42
43    #[cfg(feature = "geoparquet")]
44    #[error(transparent)]
45    /// [parquet::errors::ParquetError]
46    Parquet(#[from] parquet::errors::ParquetError),
47
48    #[error(transparent)]
49    /// [reqwest::Error]
50    Reqwest(#[from] reqwest::Error),
51
52    #[error(transparent)]
53    /// [serde_json::Error]
54    SerdeJson(#[from] serde_json::Error),
55
56    #[error(transparent)]
57    /// [stac::Error]
58    Stac(#[from] stac::Error),
59
60    /// [std::num::TryFromIntError]
61    #[error(transparent)]
62    TryFromInt(#[from] std::num::TryFromIntError),
63
64    /// Unsupported file format.
65    #[error("unsupported format: {0}")]
66    UnsupportedFormat(String),
67
68    /// [url::ParseError]
69    #[error(transparent)]
70    UrlParse(#[from] url::ParseError),
71}