webui/
errors.rs

1use crate::prelude::*;
2use std::{env::VarError, fmt::Display, string::FromUtf8Error};
3
4#[derive(Debug)]
5pub enum WebUIError {
6    Invalid(String),
7    MissingData,
8    JsonParseError,
9    JsonSerializeError,
10    LockError(String),
11    Error(String),
12}
13
14impl std::error::Error for WebUIError {}
15
16impl std::fmt::Display for WebUIError {
17    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
18        match self {
19            WebUIError::Invalid(val) => write!(f, "Invalid: {}", val),
20            WebUIError::MissingData => write!(f, "Missing Data"),
21            WebUIError::JsonParseError => write!(f, "JSON Parse Error"),
22            WebUIError::JsonSerializeError => write!(f, "JSON Serialization Error"),
23            WebUIError::LockError(val) => write!(f, "Lock Error: {}", val),
24            WebUIError::Error(val) => write!(f, "Error: {}", val),
25        }
26    }
27}
28
29impl From<std::fmt::Error> for WebUIError {
30    fn from(value: std::fmt::Error) -> Self {
31        WebUIError::Error(value.to_string())
32    }
33}
34
35impl From<std::option::Option<std::convert::Infallible>> for WebUIError {
36    fn from(value: std::option::Option<std::convert::Infallible>) -> Self {
37        WebUIError::Error(format!("{:?}", value))
38    }
39}
40
41impl From<serde_json::Error> for WebUIError {
42    fn from(value: serde_json::Error) -> Self {
43        match value.classify() {
44            serde_json::error::Category::Io => WebUIError::Error(String::from("IO Error")),
45            serde_json::error::Category::Syntax => WebUIError::JsonParseError,
46            serde_json::error::Category::Data => WebUIError::JsonParseError,
47            serde_json::error::Category::Eof => WebUIError::JsonParseError,
48        }
49    }
50}