notecrumbs

a nostr opengraph server build on nostrdb and egui
git clone git://jb55.com/notecrumbs
Log | Files | Refs | README | LICENSE

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 {}