use reqwest::StatusCode;
use rumqttc::ClientError;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum Awtrix3Error {
#[error("Invalid prefix")]
InvalidPrefix(String),
#[error("Invalid topic")]
InvalidTopic(String),
#[error("Invalid payload : {0}")]
InvalidPayload(#[from] serde_json::Error),
#[error("Invalid string payload : {0}")]
InvalidStringPayload(#[from] std::str::Utf8Error),
#[error("HTTP error")]
Http(#[from] reqwest::Error),
#[error("HTTP error: {0}")]
HttpError(StatusCode),
#[error("Invalid path")]
InvalidPath(String),
#[error("Invalid message for send")]
InvalidSendMessage,
#[error("MQTT error")]
Mqtt(#[from] ClientError),
#[error("MQTT connection error")]
MqttConnectionError(#[from] rumqttc::ConnectionError),
}