use reqwest::header::ToStrError;
#[derive(Debug, thiserror::Error, miette::Diagnostic)]
pub enum WWSVCError {
#[error("The client is not authenticated.")]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::NotAuthenticated))]
NotAuthenticated,
#[error("Missing credentials.")]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::MissingCredentials))]
MissingCredentials,
#[error("Header value contained non-ASCII characters.")]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::HeaderValueToStrError))]
HeaderValueToStrError,
#[error("Invalid header name or value.")]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::InvalidHeader))]
InvalidHeader,
#[error(transparent)]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::ReqwestError))]
ReqwestError(#[from] reqwest::Error),
#[error(transparent)]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::InvalidHeaderValue))]
InvalidHeaderValue(#[from] reqwest::header::InvalidHeaderValue),
#[error(transparent)]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::UrlParseError))]
UrlParseError(#[from] url::ParseError),
#[error(transparent)]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::IoError))]
IoError(#[from] std::io::Error),
#[error(transparent)]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::FmtError))]
FmtError(#[from] std::fmt::Error),
#[error(transparent)]
#[diagnostic(code(wwsvc_rs::error::WWSVCError::ToStrError))]
ToStrError(#[from] ToStrError),
}