matrix-notify 0.4.2

A command line tool for sending messages to matrix chatrooms.
Documentation
pub mod join_room;
pub use join_room::join_room;
pub mod login;
pub use login::login;
pub mod send_message;
pub use send_message::send_message;
pub mod verify_in_room;
pub use verify_in_room::verify_in_room;
pub mod verify_token;
pub use verify_token::verify_token;
pub mod mock_server;

use serde::Deserialize;
use thiserror::Error;

use crate::config::ConfigError;

#[derive(Error, Debug)]
pub enum ApiError {
    #[error("HTTP request failed: {0}")]
    Reqwest(#[from] reqwest::Error),
    #[error("JSON serialization error: {0}")]
    SerdeJson(#[from] serde_json::Error),
    #[error("Config error: {0}")]
    Config(#[from] ConfigError),
    #[error("Missing password in configuration")]
    MissingPassword,
    #[error("Missing token in configuration")]
    MissingToken,
    #[error("Login failed with status: {0}")]
    LoginFailed(u16),
    #[error("Join room failed with status: {0}")]
    JoinRoomFailed(u16),
    #[error("HTTP Error")]
    HttpError { source: reqwest::Error, url: String },
    #[error("Matrix API Error")]
    MatrixApiError {
        status_code: reqwest::StatusCode,
        error_message: String,
    },
    #[error("Cannot generate example config file when the config file already exists")]
    ConfigAlreadyExists,
}

#[derive(Deserialize, Debug)]
#[allow(dead_code)]
struct MatrixErrorResponseBody {
    errcode: String,
    error: String,
    retry_after_ms: Option<u64>,
}