#![doc = include_str!("../README.md")]
pub use jsonerr;
#[derive(Debug, PartialEq)]
pub struct ErrJson {
pub json: serde_json::Value,
}
impl ErrJson {
pub fn new(json: serde_json::Value) -> ErrJson {
ErrJson { json }
}
pub fn to_value(&self) -> serde_json::Value {
self.json.clone()
}
}
impl std::fmt::Display for ErrJson {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", serde_json::to_string(&self.json).unwrap())
}
}
impl std::error::Error for ErrJson {}
#[macro_export]
macro_rules! ErrJson {
(meta=$meta:expr, code=$code:expr, message=$message:expr) => {
Err(Box::new(ErrJson::new(
errjson::jsonerr::builder::JsonErrBuilder::new()
.meta($meta.into())
.code($code.into())
.message($message.into())
.build(),
)))
};
(meta=$meta:expr, code=$code:expr, message=$message:expr, payload=$payload:expr) => {
Err(Box::new(ErrJson::new(
errjson::jsonerr::builder::JsonErrBuilder::new()
.meta($meta.into())
.code($code.into())
.message($message.into())
.payload($payload.into())
.build(),
)))
};
(meta=$meta:expr, code=$code:expr, message=$message:expr, payload=$payload:expr, origin=$origin:expr) => {
Err(Box::new(ErrJson::new(
errjson::jsonerr::builder::JsonErrBuilder::new()
.meta($meta.into())
.code($code.into())
.message($message.into())
.payload($payload.into())
.origin($origin.into())
.build(),
)))
};
(meta=$meta:expr, code=$code:expr, message=$message:expr, origin=$origin:expr) => {
Err(Box::new(ErrJson::new(
errjson::jsonerr::builder::JsonErrBuilder::new()
.meta($meta.into())
.code($code.into())
.message($message.into())
.origin($origin.into())
.build(),
)))
};
(code=$code:expr, message=$message:expr) => {
Err(Box::new(ErrJson::new(
errjson::jsonerr::builder::JsonErrBuilder::new()
.code($code.into())
.message($message.into())
.build(),
)))
};
(code=$code:expr, message=$message:expr, payload=$payload:expr) => {
Err(Box::new(ErrJson::new(
errjson::jsonerr::builder::JsonErrBuilder::new()
.code($code.into())
.message($message.into())
.payload($payload.into())
.build(),
)))
};
(code=$code:expr, message=$message:expr, payload=$payload:expr, origin=$origin:expr) => {
Err(Box::new(ErrJson::new(
errjson::jsonerr::builder::JsonErrBuilder::new()
.code($code.into())
.message($message.into())
.payload($payload.into())
.origin($origin.into())
.build(),
)))
};
(code=$code:expr, message=$message:expr, origin=$origin:expr) => {
Err(Box::new(ErrJson::new(
errjson::jsonerr::builder::JsonErrBuilder::new()
.code($code.into())
.message($message.into())
.origin($origin.into())
.build(),
)))
};
}