error.rs (4079B)
1 use nostr_sdk::nips::nip19; 2 use std::array::TryFromSliceError; 3 use std::fmt; 4 use tokio::sync::broadcast::error::RecvError; 5 6 pub type Result<T> = std::result::Result<T, Error>; 7 8 #[derive(Debug)] 9 pub enum Error { 10 Nip19(nip19::Error), 11 Http(hyper::http::Error), 12 Hyper(hyper::Error), 13 Nostrdb(nostrdb::Error), 14 NostrClient(nostr_sdk::client::Error), 15 Recv(RecvError), 16 Io(std::io::Error), 17 Json(serde_json::Error), 18 Generic(String), 19 Timeout(tokio::time::error::Elapsed), 20 Image(image::error::ImageError), 21 Secp(nostr_sdk::secp256k1::Error), 22 InvalidUri, 23 NotFound, 24 /// Profile picture is too big 25 #[allow(dead_code)] 26 TooBig, 27 #[allow(dead_code)] 28 InvalidNip19, 29 NothingToFetch, 30 #[allow(dead_code)] 31 InvalidProfilePic, 32 CantRender, 33 SliceErr, 34 } 35 36 impl From<image::error::ImageError> for Error { 37 fn from(err: image::error::ImageError) -> Self { 38 Error::Image(err) 39 } 40 } 41 42 impl From<http::uri::InvalidUri> for Error { 43 fn from(_err: http::uri::InvalidUri) -> Self { 44 Error::InvalidUri 45 } 46 } 47 48 impl From<serde_json::Error> for Error { 49 fn from(err: serde_json::Error) -> Self { 50 Error::Json(err) 51 } 52 } 53 54 impl From<nostr_sdk::secp256k1::Error> for Error { 55 fn from(err: nostr_sdk::secp256k1::Error) -> Self { 56 Error::Secp(err) 57 } 58 } 59 60 impl From<std::io::Error> for Error { 61 fn from(err: std::io::Error) -> Self { 62 Error::Io(err) 63 } 64 } 65 66 impl From<String> for Error { 67 fn from(err: String) -> Self { 68 Error::Generic(err) 69 } 70 } 71 72 impl From<RecvError> for Error { 73 fn from(err: RecvError) -> Self { 74 Error::Recv(err) 75 } 76 } 77 78 impl From<tokio::time::error::Elapsed> for Error { 79 fn from(err: tokio::time::error::Elapsed) -> Self { 80 Error::Timeout(err) 81 } 82 } 83 84 impl From<hyper::Error> for Error { 85 fn from(err: hyper::Error) -> Self { 86 Error::Hyper(err) 87 } 88 } 89 90 impl From<TryFromSliceError> for Error { 91 fn from(_: TryFromSliceError) -> Self { 92 Error::SliceErr 93 } 94 } 95 96 impl From<nostr_sdk::client::Error> for Error { 97 fn from(err: nostr_sdk::client::Error) -> Self { 98 Error::NostrClient(err) 99 } 100 } 101 102 impl From<nip19::Error> for Error { 103 fn from(err: nip19::Error) -> Self { 104 Error::Nip19(err) 105 } 106 } 107 108 impl From<hyper::http::Error> for Error { 109 fn from(err: hyper::http::Error) -> Self { 110 Error::Http(err) 111 } 112 } 113 114 impl From<nostrdb::Error> for Error { 115 fn from(err: nostrdb::Error) -> Self { 116 Error::Nostrdb(err) 117 } 118 } 119 120 // Implementing `Display` 121 impl fmt::Display for Error { 122 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 123 match self { 124 Error::Nip19(e) => write!(f, "Nip19 error: {}", e), 125 Error::Http(e) => write!(f, "HTTP error: {}", e), 126 Error::Nostrdb(e) => write!(f, "Nostrdb error: {}", e), 127 Error::NostrClient(e) => write!(f, "Nostr client error: {}", e), 128 Error::NotFound => write!(f, "Not found"), 129 Error::Recv(e) => write!(f, "Recieve error: {}", e), 130 Error::Json(e) => write!(f, "json error: {e}"), 131 Error::InvalidNip19 => write!(f, "Invalid nip19 object"), 132 Error::NothingToFetch => write!(f, "No data to fetch!"), 133 Error::SliceErr => write!(f, "Array slice error"), 134 Error::TooBig => write!(f, "Profile picture is too big"), 135 Error::InvalidProfilePic => write!(f, "Profile picture is corrupt"), 136 Error::CantRender => write!(f, "Error rendering"), 137 Error::Image(err) => write!(f, "Image error: {}", err), 138 Error::Timeout(elapsed) => write!(f, "Timeout error: {}", elapsed), 139 Error::InvalidUri => write!(f, "Invalid url"), 140 Error::Hyper(err) => write!(f, "Hyper error: {}", err), 141 Error::Generic(err) => write!(f, "Generic error: {}", err), 142 Error::Io(err) => write!(f, "Io error: {}", err), 143 Error::Secp(err) => write!(f, "Signature error: {}", err), 144 } 145 } 146 } 147 148 impl std::error::Error for Error {}