1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
use crate::Value;
use serde_json::Value as JsonValue;
use thiserror::Error;
/// Error enum for crate-specific errors.
#[derive(Error, Debug)]
pub enum Error {
/// [std::io::Error]
#[error(transparent)]
Io(#[from] std::io::Error),
/// Returned when the `type` field of a STAC object is not a [String].
#[error("invalid \"type\" field: {0}")]
InvalidTypeField(JsonValue),
/// Returned when a STAC object has the wrong type field.
#[error("incorrect type: expected={expected}, actual={actual}")]
IncorrectType {
/// The actual type field on the object.
actual: String,
/// The expected value.
expected: String,
},
/// Returned when there is not a `type` field on a STAC object
#[error("no \"type\" field in the JSON object")]
MissingType,
/// Returned when an object is expected to have an href, but it doesn't.
#[error("object has no href")]
MissingHref,
/// This value is not an item.
#[error("value is not an item")]
NotAnItem(Value),
/// This value is not a catalog.
#[error("value is not a catalog")]
NotACatalog(Value),
/// This value is not a collection.
#[error("value is not a collection")]
NotACollection(Value),
/// Returned when trying to read from a url but the `reqwest` feature is not enabled.
#[error("reqwest is not enabled")]
ReqwestNotEnabled,
/// [reqwest::Error]
#[cfg(feature = "reqwest")]
#[error(transparent)]
Reqwest(#[from] reqwest::Error),
/// [serde_json::Error]
#[error(transparent)]
SerdeJson(#[from] serde_json::Error),
/// [serde_urlencoded::ser::Error]
#[cfg(feature = "set_query")]
#[error(transparent)]
SerdeUrlencodedSer(#[from] serde_urlencoded::ser::Error),
/// Returned when the `type` field of a STAC object does not equal `"Feature"`, `"Catalog"`, or `"Collection"`.
#[error("unknown \"type\": {0}")]
UnknownType(String),
/// [url::ParseError]
#[error(transparent)]
Url(#[from] url::ParseError),
/// [jsonschema::ValidationError], but owned.
#[cfg(feature = "jsonschema")]
#[error(transparent)]
ValidationError(#[from] jsonschema::ValidationError<'static>),
}