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}