diff options
author | 2025-04-03 03:41:38 +0100 | |
---|---|---|
committer | 2025-04-03 03:41:38 +0100 | |
commit | 91f1994af940085d5d475a97820900ebbf0eb553 (patch) | |
tree | 6aab872f71d17a785d3d9286742fef38983d274c /filamento/src/error.rs | |
parent | 9ce3827a7d25714d17f266f0f50bb29f41090175 (diff) | |
download | luz-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.rs | 52 |
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, +} |