aboutsummaryrefslogtreecommitdiffstats
path: root/filamento/src/error.rs
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-04-03 03:41:38 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-04-03 03:41:38 +0100
commit91f1994af940085d5d475a97820900ebbf0eb553 (patch)
tree6aab872f71d17a785d3d9286742fef38983d274c /filamento/src/error.rs
parent9ce3827a7d25714d17f266f0f50bb29f41090175 (diff)
downloadluz-91f1994af940085d5d475a97820900ebbf0eb553.tar.gz
luz-91f1994af940085d5d475a97820900ebbf0eb553.tar.bz2
luz-91f1994af940085d5d475a97820900ebbf0eb553.zip
feat: better message handling, pep publish, xep_0172: nick
Diffstat (limited to 'filamento/src/error.rs')
-rw-r--r--filamento/src/error.rs52
1 files changed, 49 insertions, 3 deletions
diff --git a/filamento/src/error.rs b/filamento/src/error.rs
index 8e2e4be..9ecc330 100644
--- a/filamento/src/error.rs
+++ b/filamento/src/error.rs
@@ -34,12 +34,22 @@ pub enum Error {
MessageSend(#[from] MessageSendError),
#[error("message receive error: {0}")]
MessageRecv(#[from] MessageRecvError),
+ #[error("subscripbe error: {0}")]
+ Subscribe(#[from] SubscribeError),
+ #[error("publish error: {0}")]
+ Publish(#[from] PublishError),
}
#[derive(Debug, Error, Clone)]
pub enum MessageSendError {
#[error("could not add to message history: {0}")]
MessageHistory(#[from] DatabaseError),
+ #[error("could not mark chat as chatted: {0}")]
+ MarkChatAsChatted(DatabaseError),
+ #[error("could not get client user details: {0}")]
+ GetUserDetails(DatabaseError),
+ #[error("writing message to connection: {0}")]
+ Write(#[from] WriteError),
}
#[derive(Debug, Error, Clone)]
@@ -48,6 +58,8 @@ pub enum MessageRecvError {
MessageHistory(#[from] DatabaseError),
#[error("missing from")]
MissingFrom,
+ #[error("could not update user nick: {0}")]
+ NickUpdate(DatabaseError),
}
#[derive(Debug, Error, Clone)]
@@ -75,7 +87,7 @@ pub enum RosterError {
#[error("cache: {0}")]
Cache(#[from] DatabaseError),
#[error("iq response: {0}")]
- IqResponse(#[from] RequestError),
+ IqResponse(#[from] IqRequestError),
#[error("stream write: {0}")]
Write(#[from] WriteError),
// TODO: display for stanza, to show as xml, same for read error types.
@@ -92,7 +104,7 @@ pub enum DiscoError {
#[error("write error: {0}")]
Write(#[from] WriteError),
#[error("iq response: {0}")]
- IqResponse(#[from] RequestError),
+ IqResponse(#[from] IqRequestError),
#[error("reply from incorrect entity: {0}")]
IncorrectEntity(JID),
#[error("unexpected reply: {0:?}")]
@@ -108,7 +120,7 @@ pub enum DiscoError {
}
#[derive(Debug, Error, Clone)]
-pub enum RequestError {
+pub enum IqRequestError {
#[error("sending request: {0}")]
Write(#[from] WriteError),
#[error("receiving expected response: {0}")]
@@ -173,6 +185,14 @@ impl From<tokio::io::Error> for DatabaseOpenError {
}
#[derive(Debug, Error, Clone)]
+pub enum SubscribeError {
+ #[error("write: {0}")]
+ Write(#[from] WriteError),
+ #[error("fetching client user details: {0}")]
+ Database(#[from] DatabaseError),
+}
+
+#[derive(Debug, Error, Clone)]
pub enum PresenceError {
#[error("unsupported")]
Unsupported,
@@ -181,3 +201,29 @@ pub enum PresenceError {
#[error("stanza error: {0}")]
StanzaError(#[from] stanza::client::error::Error),
}
+
+#[derive(Debug, Error, Clone)]
+pub enum PublishError {
+ #[error("received mismatched query")]
+ MismatchedQuery(Query),
+ #[error("missing query")]
+ MissingQuery,
+ #[error("stanza errors: {0:?}")]
+ StanzaErrors(Vec<stanza::client::error::Error>),
+ #[error("reply from incorrect entity: {0}")]
+ IncorrectEntity(JID),
+ #[error("unexpected stanza: {0:?}")]
+ UnexpectedStanza(Stanza),
+ #[error("iq response: {0}")]
+ IqResponse(#[from] IqRequestError),
+}
+
+#[derive(Debug, Error, Clone)]
+pub enum NickError {
+ #[error("publishing nick: {0}")]
+ Publish(#[from] CommandError<PublishError>),
+ #[error("updating database: {0}")]
+ Database(#[from] DatabaseError),
+ #[error("disconnected")]
+ Disconnected,
+}