use crate::error::SteamError;
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
pub enum WebAPIRequestException {
#[error("Response status code does not indicate success: {status} ({reason}).")]
Status {
status: u16,
reason: String,
},
#[error("{message}")]
Other {
message: String,
},
}
impl WebAPIRequestException {
pub fn status(status: u16, reason: impl Into<String>) -> Self {
WebAPIRequestException::Status {
status,
reason: reason.into(),
}
}
pub fn other(message: impl Into<String>) -> Self {
WebAPIRequestException::Other {
message: message.into(),
}
}
}
impl From<WebAPIRequestException> for SteamError {
fn from(value: WebAPIRequestException) -> Self {
let message = value.to_string();
match value {
WebAPIRequestException::Status { .. } => SteamError::Connection(message),
WebAPIRequestException::Other { .. } => SteamError::Other(message),
}
}
}