2 releases
Uses new Rust 2024
new 0.1.2 | Apr 21, 2025 |
---|---|
0.1.1 | Apr 21, 2025 |
#1068 in Network programming
145 downloads per month
18KB
162 lines
cdumay_error_http
This crate provides structured mapping from HTTP status codes to custom application error types using the cdumay_error
crate. It is especially useful when you want to handle HTTP error responses in a standardized and extensible way.
Features
- Maps common HTTP status codes (300–511) to well-defined application-specific errors.
- Integrates seamlessly with the
cdumay_error
ecosystem. - Allows contextual error data and custom messages.
- Supports conversion from both
u16
andhttp::StatusCode
.
Usage
Define Error Kinds and Errors
The define_kinds!
macro associates each HTTP status code with:
- A custom error code string (e.g.,
"HTTP-26760"
) - A numerical HTTP status code
- A descriptive error label
The define_errors!
macro maps those kinds into named error types (e.g., HttpClientError404
, HttpServerError500
, etc.).
HTTP Error Conversion
Use the HTTPErrorConverter
to map a numeric status code (or StatusCode
) to a fully populated cdumay_error::Error
.
use std::collections::BTreeMap;
use serde_value::Value;
use http::StatusCode;
use cdumay_error_http::HTTPErrorConverter;
let mut context = BTreeMap::new();
context.insert("url".to_string(), Value::String("https://example.com".to_string()));
let error = HTTPErrorConverter::from_status(
StatusCode::NOT_FOUND,
Some("The requested resource could not be located.".to_string()),
context,
);
println!("{:?}", error);
Dependencies
~1.1–1.8MB
~37K SLoC