http-whatever

Crates.iohttp-whatever
lib.rshttp-whatever
version0.4.0
sourcesrc
created_at2023-11-20 12:12:33.112482
updated_at2024-10-31 16:24:31.167235
descriptionA threadsafe snafu::Whatever for HTTP errors
homepagehttps://github.com/bassmanitram/http-whatever
repositoryhttps://github.com/bassmanitram/http-whatever
max_upload_size
id1042018
size25,720
Martin Bartlett (bassmanitram)

documentation

https://docs.rs/http-whatever

README

http-whatever

CI

A Thread-safe version of snafu::Whatever, which also allows for structured message strings giving HTTP status code and application domain qualifiers, and allows an Error to be turned into an http::Response.

I fully admit that this flies in the face of "type-oriented" error handling, but I really do feel that that is overkill for most HTTP applications where one error (or one error chain) is the most you will get out of any request/response cycle, and the goals are simply:

a. Tell the user what went wrong with a standard HTTP status and message, and b. Log the error (chain) for further investigation if necessary

To that end, this allows you to use the "whatever..." context features from snafu while still categorizing your errors and avoiding the boilerplate of creating error HTTP responses from those errors.

Examples

Basic use ala snafu::Whatever.

use http_whatever::prelude::*;
fn parse_uint(uint_as_str: &str) -> Result<usize, HttpWhatever> {
    uint_as_str.parse().whatever_context("400:RequestContent:Bad value")?
}

Using the macro

use http_whatever::prelude::*;
fn parse_uint(uint_as_str: &str) -> Result<usize, HttpWhatever> {
    uint_as_str.parse().whatever_context(http_err!(400,uint_as_str,"Bad input"))?
}
Commit count: 19

cargo fmt