matrix_notify/api/
mod.rs

1pub mod join_room;
2pub use join_room::join_room;
3pub mod login;
4pub use login::login;
5pub mod send_message;
6pub use send_message::send_message;
7pub mod verify_in_room;
8pub use verify_in_room::verify_in_room;
9pub mod verify_token;
10pub use verify_token::verify_token;
11pub mod mock_server;
12
13use serde::Deserialize;
14use thiserror::Error;
15
16use crate::config::ConfigError;
17
18#[derive(Error, Debug)]
19pub enum ApiError {
20    #[error("HTTP request failed: {0}")]
21    Reqwest(#[from] reqwest::Error),
22    #[error("JSON serialization error: {0}")]
23    SerdeJson(#[from] serde_json::Error),
24    #[error("Config error: {0}")]
25    Config(#[from] ConfigError),
26    #[error("Missing password in configuration")]
27    MissingPassword,
28    #[error("Missing token in configuration")]
29    MissingToken,
30    #[error("Login failed with status: {0}")]
31    LoginFailed(u16),
32    #[error("Join room failed with status: {0}")]
33    JoinRoomFailed(u16),
34    #[error("HTTP Error")]
35    HttpError { source: reqwest::Error, url: String },
36    #[error("Matrix API Error")]
37    MatrixApiError {
38        status_code: reqwest::StatusCode,
39        error_message: String,
40    },
41    #[error("Cannot generate example config file when the config file already exists")]
42    ConfigAlreadyExists,
43}
44
45#[derive(Deserialize, Debug)]
46#[allow(dead_code)]
47struct MatrixErrorResponseBody {
48    errcode: String,
49    error: String,
50    retry_after_ms: Option<u64>,
51}