use serde::{Deserialize, Serialize};
#[derive(thiserror::Error, Debug)]
pub enum ZebedeeError {
#[error("{0}")]
InvalidRequest(#[from] reqwest::Error),
#[error("Unable to parse json: {0}")]
InvalidJson(#[from] serde_json::Error),
#[error("{0}")]
Validate(#[from] validator::ValidationErrors),
#[error("{0:?}")]
Api(ApiError),
#[error("{0:?}")]
Msg(ErrorMsg),
}
#[derive(Debug, Serialize, Deserialize, Default)]
#[serde(default)]
pub struct ApiError {
pub message: String,
pub success: bool,
}
#[derive(thiserror::Error, Debug)]
pub enum ErrorMsg {
#[error("Bad Gamertag Payment format {0}")]
BadGamerTagFormat(String),
#[error("Bad payload data {0}")]
BadPayloadData(String),
#[error("Bad LN Address {0}, ValidationError {1}")]
BadLnAddress(String, String),
}
impl From<ErrorMsg> for ZebedeeError {
fn from(value: ErrorMsg) -> Self {
ZebedeeError::Msg(value)
}
}
impl From<ApiError> for ZebedeeError {
fn from(value: ApiError) -> Self {
ZebedeeError::Api(value)
}
}