rain_metadata/error/
mod.rs1use std::{string::FromUtf8Error, str::Utf8Error};
2
3use rain_metaboard_subgraph::metaboard_client::MetaboardSubgraphClientError;
4
5use crate::meta::KnownMagic;
6
7#[derive(Debug)]
9pub enum Error {
10 CorruptMeta,
11 InvalidHash,
12 UnknownMeta,
13 UnknownMagic,
14 NoRecordFound,
15 UnsupportedMeta,
16 BiggerThan32Bytes,
17 UnsupportedNetwork,
18 InflateError(String),
19 InvalidInput(String),
20 InvalidUrl(String),
21 Utf8Error(Utf8Error),
22 FromUtf8Error(FromUtf8Error),
23 ReqwestError(reqwest::Error),
24 SerdeCborError(serde_cbor::Error),
25 SerdeJsonError(serde_json::Error),
26 AbiCoderError(alloy::sol_types::Error),
27 ValidationErrors(validator::ValidationErrors),
28 DecodeHexStringError(alloy::primitives::hex::FromHexError),
29 InvalidMetaMagic(KnownMagic, KnownMagic),
30 MetaboardSubgraphClientError(MetaboardSubgraphClientError),
31}
32
33impl std::fmt::Display for Error {
34 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
35 match self {
36 Error::CorruptMeta => f.write_str("corrupt meta"),
37 Error::UnknownMeta => f.write_str("unknown meta"),
38 Error::UnknownMagic => f.write_str("unknown magic"),
39 Error::UnsupportedMeta => f.write_str("unsupported meta"),
40 Error::InvalidHash => f.write_str("invalid keccak256 hash"),
41 Error::NoRecordFound => f.write_str("found no matching record"),
42 Error::UnsupportedNetwork => {
43 f.write_str("no rain subgraph is deployed for this network")
44 }
45 Error::BiggerThan32Bytes => {
46 f.write_str("unexpected input size, must be 32 bytes or less")
47 }
48 Error::InvalidInput(v) => write!(f, "invalid input: {}", v),
49 Error::InvalidUrl(v) => write!(f, "invalid URL: {}", v),
50 Error::ReqwestError(v) => write!(f, "{}", v),
51 Error::InflateError(v) => write!(f, "{}", v),
52 Error::Utf8Error(v) => write!(f, "{}", v),
53 Error::AbiCoderError(v) => write!(f, "{}", v),
54 Error::SerdeCborError(v) => write!(f, "{}", v),
55 Error::SerdeJsonError(v) => write!(f, "{}", v),
56 Error::FromUtf8Error(v) => write!(f, "{}", v),
57 Error::DecodeHexStringError(v) => write!(f, "{}", v),
58 Error::ValidationErrors(v) => write!(f, "{}", v),
59 Error::InvalidMetaMagic(expected, actual) => {
60 write!(
61 f,
62 "invalid meta magic: expected {:?}, got {:?}",
63 expected, actual
64 )
65 }
66 Error::MetaboardSubgraphClientError(v) => write!(f, "{}", v),
67 }
68 }
69}
70
71impl std::error::Error for Error {}
72
73impl From<serde_json::Error> for Error {
74 fn from(value: serde_json::Error) -> Self {
75 Error::SerdeJsonError(value)
76 }
77}
78
79impl From<serde_cbor::Error> for Error {
80 fn from(value: serde_cbor::Error) -> Self {
81 Error::SerdeCborError(value)
82 }
83}
84
85impl From<FromUtf8Error> for Error {
86 fn from(value: FromUtf8Error) -> Self {
87 Error::FromUtf8Error(value)
88 }
89}
90
91impl From<Utf8Error> for Error {
92 fn from(value: Utf8Error) -> Self {
93 Error::Utf8Error(value)
94 }
95}
96
97impl From<validator::ValidationErrors> for Error {
98 fn from(value: validator::ValidationErrors) -> Self {
99 Error::ValidationErrors(value)
100 }
101}
102
103impl From<alloy::sol_types::Error> for Error {
104 fn from(value: alloy::sol_types::Error) -> Self {
105 Error::AbiCoderError(value)
106 }
107}