2 releases

Uses new Rust 2024

new 0.1.2 Apr 21, 2025
0.1.1 Apr 21, 2025

#1068 in Network programming

Download history 141/week @ 2025-04-15

145 downloads per month

Custom license

18KB
162 lines

cdumay_error_http

License: BSD-3-Clause cdumay_error_http on crates.io cdumay_error_http on docs.rs Source Code Repository

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 and http::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