use lz4_flex::block::DecompressError;
use once_cell::sync::Lazy;
use snafu::Snafu;
use std::env;
use tibba_error::Error as BaseError;
#[derive(Snafu, Debug)]
pub enum Error {
#[snafu(display("{source}"))]
Zstd { source: std::io::Error },
#[snafu(display("{source}"))]
Lz4Decompress { source: DecompressError },
#[snafu(display("{source}"))]
InvalidHeaderName {
source: axum::http::header::InvalidHeaderName,
},
#[snafu(display("{source}"))]
InvalidHeaderValue {
source: axum::http::header::InvalidHeaderValue,
},
#[snafu(display("{source}"))]
Axum { source: axum::Error },
}
impl From<Error> for BaseError {
fn from(val: Error) -> Self {
let sub_category = match val {
Error::Zstd { .. } => "zstd",
Error::Lz4Decompress { .. } => "lz4_decompress",
Error::InvalidHeaderName { .. } => "invalid_header_name",
Error::InvalidHeaderValue { .. } => "invalid_header_value",
Error::Axum { .. } => "axum",
};
BaseError::new(val)
.with_category("util")
.with_sub_category(sub_category)
}
}
static RUST_ENV: Lazy<String> =
Lazy::new(|| env::var("RUST_ENV").unwrap_or_else(|_| "dev".to_string()));
pub fn get_env() -> &'static str {
&RUST_ENV
}
pub fn is_development() -> bool {
get_env() == "dev"
}
pub fn is_test() -> bool {
get_env() == "test"
}
pub fn is_production() -> bool {
get_env() == "production"
}
mod compression;
mod datetime;
mod http;
mod request;
mod response;
mod string;
mod value;
pub use compression::*;
pub use datetime::*;
pub use http::*;
pub use request::*;
pub use response::*;
pub use string::*;
pub use value::*;