Split errors into own lib file
This commit is contained in:
parent
a82b21b2ce
commit
d8e00da078
55
src/lib.rs
Normal file
55
src/lib.rs
Normal file
|
@ -0,0 +1,55 @@
|
|||
use std::{io, env, fmt, error::Error};
|
||||
use toml::{self, de};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum WsError {
|
||||
Reqwest(reqwest::Error),
|
||||
Url(url::ParseError),
|
||||
Io(io::Error),
|
||||
Toml(de::Error),
|
||||
Var(env::VarError),
|
||||
}
|
||||
|
||||
impl From<url::ParseError> for WsError {
|
||||
fn from(value: url::ParseError) -> Self {
|
||||
Self::Url(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<reqwest::Error> for WsError {
|
||||
fn from(value: reqwest::Error) -> Self {
|
||||
Self::Reqwest(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<io::Error> for WsError {
|
||||
fn from(value: io::Error) -> Self {
|
||||
Self::Io(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<toml::de::Error> for WsError {
|
||||
fn from(value: toml::de::Error) -> Self {
|
||||
Self::Toml(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<env::VarError> for WsError {
|
||||
fn from(value: env::VarError) -> Self {
|
||||
Self::Var(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl Error for WsError {}
|
||||
|
||||
impl fmt::Display for WsError {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match self {
|
||||
WsError::Reqwest(e) => write!(f, "reqwest error: {}", e),
|
||||
WsError::Url(e) => write!(f, "url error: {}", e),
|
||||
WsError::Io(e) => write!(f, "io error: {}", e),
|
||||
WsError::Toml(e) => write!(f, "toml error: {}", e),
|
||||
WsError::Var(e) => write!(f, "var error: {}", e),
|
||||
}
|
||||
}
|
||||
}
|
57
src/main.rs
57
src/main.rs
|
@ -14,10 +14,10 @@ use prometheus::{
|
|||
};
|
||||
use reqwest::header::USER_AGENT;
|
||||
use serde::Deserialize;
|
||||
use vrchat_prometheus_adapter::WsError;
|
||||
use std::collections::HashMap;
|
||||
use std::error::Error;
|
||||
use std::sync::OnceLock;
|
||||
use std::{env, fmt, fs, io};
|
||||
use std::{env, fs};
|
||||
use url::Url;
|
||||
|
||||
static PLAYER_COUNT: OnceLock<GaugeVec> = OnceLock::new();
|
||||
|
@ -26,59 +26,6 @@ static WORLD_VISITS: OnceLock<IntCounterVec> = OnceLock::new();
|
|||
static WORLD_OCCUPANTS: OnceLock<GaugeVec> = OnceLock::new();
|
||||
static WORLD_FAVORITES: OnceLock<IntCounterVec> = OnceLock::new();
|
||||
|
||||
#[derive(Debug)]
|
||||
enum WsError {
|
||||
Reqwest(reqwest::Error),
|
||||
Url(url::ParseError),
|
||||
Io(io::Error),
|
||||
Toml(toml::de::Error),
|
||||
Var(env::VarError),
|
||||
}
|
||||
|
||||
impl From<url::ParseError> for WsError {
|
||||
fn from(value: url::ParseError) -> Self {
|
||||
Self::Url(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<reqwest::Error> for WsError {
|
||||
fn from(value: reqwest::Error) -> Self {
|
||||
Self::Reqwest(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<io::Error> for WsError {
|
||||
fn from(value: io::Error) -> Self {
|
||||
Self::Io(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<toml::de::Error> for WsError {
|
||||
fn from(value: toml::de::Error) -> Self {
|
||||
Self::Toml(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<env::VarError> for WsError {
|
||||
fn from(value: env::VarError) -> Self {
|
||||
Self::Var(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl Error for WsError {}
|
||||
|
||||
impl fmt::Display for WsError {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match self {
|
||||
WsError::Reqwest(e) => write!(f, "reqwest error: {}", e),
|
||||
WsError::Url(e) => write!(f, "url error: {}", e),
|
||||
WsError::Io(e) => write!(f, "io error: {}", e),
|
||||
WsError::Toml(e) => write!(f, "toml error: {}", e),
|
||||
WsError::Var(e) => write!(f, "var error: {}", e),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
struct Config {
|
||||
/// Groups we want to track.
|
||||
|
|
Loading…
Reference in a new issue