nostr_sdk/client/
error.rs1use std::fmt;
6
7use nostr::prelude::*;
8use nostr::serde_json;
9use nostr_database::prelude::*;
10use nostr_relay_pool::__private::SharedStateError;
11use nostr_relay_pool::prelude::*;
12
13#[derive(Debug)]
15pub enum Error {
16 Relay(nostr_relay_pool::relay::Error),
18 RelayPool(pool::Error),
20 Database(DatabaseError),
22 Signer(SignerError),
24 EventBuilder(event::builder::Error),
26 Json(serde_json::Error),
28 SharedState(SharedStateError),
30 #[cfg(feature = "nip59")]
32 NIP59(nip59::Error),
33 EventNotFound(EventId),
35 ImpossibleToZap(String),
37 GossipFiltersEmpty,
39 PrivateMsgRelaysNotFound,
41}
42
43impl std::error::Error for Error {}
44
45impl fmt::Display for Error {
46 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
47 match self {
48 Self::Relay(e) => write!(f, "{e}"),
49 Self::RelayPool(e) => write!(f, "{e}"),
50 Self::Database(e) => write!(f, "{e}"),
51 Self::Signer(e) => write!(f, "{e}"),
52 Self::EventBuilder(e) => write!(f, "{e}"),
53 Self::Json(e) => write!(f, "{e}"),
54 Self::SharedState(e) => write!(f, "{e}"),
55 #[cfg(feature = "nip59")]
56 Self::NIP59(e) => write!(f, "{e}"),
57 Self::EventNotFound(id) => {
58 write!(f, "event not found: {id}")
59 }
60 Self::ImpossibleToZap(id) => {
61 write!(f, "impossible to send zap: {id}")
62 }
63 Self::GossipFiltersEmpty => {
64 write!(f, "gossip broken down filters are empty")
65 }
66 Self::PrivateMsgRelaysNotFound => write!(f, "Private message relays not found. The user is not ready to receive private messages."),
67 }
68 }
69}
70
71impl From<nostr_relay_pool::relay::Error> for Error {
72 fn from(e: nostr_relay_pool::relay::Error) -> Self {
73 Self::Relay(e)
74 }
75}
76
77impl From<pool::Error> for Error {
78 fn from(e: pool::Error) -> Self {
79 Self::RelayPool(e)
80 }
81}
82
83impl From<DatabaseError> for Error {
84 fn from(e: DatabaseError) -> Self {
85 Self::Database(e)
86 }
87}
88
89impl From<SignerError> for Error {
90 fn from(e: SignerError) -> Self {
91 Self::Signer(e)
92 }
93}
94
95impl From<event::builder::Error> for Error {
96 fn from(e: event::builder::Error) -> Self {
97 Self::EventBuilder(e)
98 }
99}
100
101impl From<serde_json::Error> for Error {
102 fn from(e: serde_json::Error) -> Self {
103 Self::Json(e)
104 }
105}
106
107impl From<SharedStateError> for Error {
108 fn from(e: SharedStateError) -> Self {
109 Self::SharedState(e)
110 }
111}
112
113#[cfg(feature = "nip59")]
114impl From<nip59::Error> for Error {
115 fn from(e: nip59::Error) -> Self {
116 Self::NIP59(e)
117 }
118}