use std::{error::Error, fmt, fmt::Display};
#[derive(Debug, Clone)]
pub(crate) enum ProcessInfoError {
ProcessNotAvailable,
PortNotFound,
AuthTokenNotFound,
}
impl Error for ProcessInfoError {}
impl Display for ProcessInfoError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::ProcessNotAvailable => write!(
f,
"{:?}: Riot/League client process could not be found",
self
),
Self::PortNotFound => write!(
f,
"{:?}: API port could not be parsed from process arguments",
self
),
Self::AuthTokenNotFound => write!(
f,
"{:?}: API auth token could not be parsed from process arguments",
self
),
}
}
}
#[derive(Debug, Clone)]
pub enum IngameClientError {
ApiNotAvailableInSpectatorMode,
ApiNotAvailableDuringLoadingScreen,
ClientError(String),
ServerError(String),
DeserializationError(String),
ConnectionError(String),
}
impl From<reqwest::Error> for IngameClientError {
fn from(error: reqwest::Error) -> Self {
if let Some(status) = error.status() {
if status == 400 {
return IngameClientError::ApiNotAvailableInSpectatorMode;
} else if status == 404 {
return IngameClientError::ApiNotAvailableDuringLoadingScreen;
} else if status.is_client_error() {
return IngameClientError::ClientError(status.to_string());
} else if status.is_server_error() {
return IngameClientError::ServerError(status.to_string());
}
}
if error.is_decode() {
return IngameClientError::DeserializationError(error.to_string());
}
IngameClientError::ConnectionError(error.to_string())
}
}
impl Error for IngameClientError {}
impl Display for IngameClientError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Debug::fmt(self, f)
}
}
#[derive(Debug, Clone)]
pub enum LcuWebsocketError {
LcuNotAvailable(String),
AuthError,
SendError,
Disconnected(String),
}
impl Error for LcuWebsocketError {}
impl Display for LcuWebsocketError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::LcuNotAvailable(s) => write!(f, "LCU API not available: {}", s),
Self::AuthError => write!(f, "Authentication error"),
Self::SendError => write!(f, "Error sending message"),
Self::Disconnected(s) => write!(f, "Websocket disconnected: {}", s),
}
}
}