router: re-export HttpError from proxmox-http-error

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
This commit is contained in:
Lukas Wagner 2023-07-26 16:18:22 +02:00 committed by Wolfgang Bumiller
parent 779c45eaad
commit add38769f8
3 changed files with 3 additions and 42 deletions

View File

@ -26,6 +26,7 @@ rustyline = { version = "9", optional = true }
libc = { workspace = true, optional = true }
proxmox-lang.workspace = true
proxmox-http-error.workspace = true
proxmox-schema.workspace = true
proxmox-async.workspace = true

View File

@ -1,44 +1,4 @@
use std::fmt;
pub use proxmox_http_error::{http_bail, http_err, HttpError};
#[doc(hidden)]
pub use http::StatusCode;
/// HTTP error including `StatusCode` and message.
#[derive(Debug)]
pub struct HttpError {
pub code: StatusCode,
pub message: String,
}
impl std::error::Error for HttpError {}
impl HttpError {
pub fn new(code: StatusCode, message: String) -> Self {
HttpError { code, message }
}
}
impl fmt::Display for HttpError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.message)
}
}
/// Macro to create a HttpError inside a anyhow::Error
#[macro_export]
macro_rules! http_err {
($status:ident, $($fmt:tt)+) => {{
::anyhow::Error::from($crate::HttpError::new(
$crate::error::StatusCode::$status,
format!($($fmt)+)
))
}};
}
/// Bail with an error generated with the `http_err!` macro.
#[macro_export]
macro_rules! http_bail {
($status:ident, $($fmt:tt)+) => {{
return Err($crate::http_err!($status, $($fmt)+));
}};
}

View File

@ -17,7 +17,7 @@ mod serializable_return;
#[doc(inline)]
#[cfg(feature = "server")]
pub use error::HttpError;
pub use error::*;
pub use permission::*;
pub use router::*;