geospatial_types/
error.rs1use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8pub enum CacheOperationFailureReason {
9 StoreUnavailable,
11 RecordCorrupted,
13 WriteRejected,
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
19pub enum OfflineGraphInvalidReason {
20 ArchiveMalformed,
22 VersionUnsupported,
24 IndexOutOfRange,
26}
27
28#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
31pub enum SDKError {
32 InvalidCoordinateInput(String),
34 NetworkRequestFailed(String),
36 ResponseParsingFailure(String),
38 ProviderRequestRejected(String),
40 RateLimitExhausted,
42 ProviderNotConfigured(String),
44 CacheOperationFailure(CacheOperationFailureReason),
46 OfflineRoutingFailure(OfflineGraphInvalidReason),
48}
49
50impl std::fmt::Display for SDKError {
51 fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
52 match self {
53 Self::InvalidCoordinateInput(detail) => {
54 write!(formatter, "invalid coordinate input: {detail}")
55 }
56 Self::NetworkRequestFailed(detail) => {
57 write!(formatter, "network request failed: {detail}")
58 }
59 Self::ResponseParsingFailure(detail) => {
60 write!(formatter, "response parsing failure: {detail}")
61 }
62 Self::ProviderRequestRejected(detail) => {
63 write!(formatter, "provider rejected request: {detail}")
64 }
65 Self::RateLimitExhausted => write!(formatter, "rate limit exhausted"),
66 Self::ProviderNotConfigured(contract_name) => {
67 write!(formatter, "no provider configured for {contract_name}")
68 }
69 Self::CacheOperationFailure(reason) => {
70 write!(formatter, "cache operation failure: {reason:?}")
71 }
72 Self::OfflineRoutingFailure(reason) => {
73 write!(formatter, "offline graph invalid: {reason:?}")
74 }
75 }
76 }
77}
78
79impl std::error::Error for SDKError {}