Skip to main content

ntex_http/
lib.rs

1//! HTTP protocol primitives for ntex.
2//!
3//! This crate provides [`HeaderMap`] and [`HeaderValue`] implementations,
4//! message-body abstractions in [`body`], common HTTP errors, and re-exports of
5//! standard method, status, URI, version, and header-name types.
6#![deny(clippy::pedantic)]
7#![allow(
8    clippy::missing_fields_in_debug,
9    clippy::missing_errors_doc,
10    clippy::must_use_candidate,
11    clippy::needless_pass_by_value
12)]
13
14pub mod body;
15pub mod error;
16pub mod header;
17mod map;
18mod serde;
19mod value;
20
21pub use self::error::Error;
22pub use self::map::HeaderMap;
23pub use self::value::HeaderValue;
24
25#[doc(hidden)]
26pub use self::map::Value;
27
28// re-exports
29pub use http::header::HeaderName;
30pub use http::{Method, StatusCode, Version};
31
32/// Converts an `http::HeaderMap` into an ntex [`HeaderMap`].
33impl From<http::HeaderMap> for HeaderMap {
34    fn from(map: http::HeaderMap) -> HeaderMap {
35        let mut new_map = HeaderMap::with_capacity(map.capacity());
36        for (h, v) in &map {
37            new_map.append(h.clone(), HeaderValue::from(v));
38        }
39        new_map
40    }
41}
42
43#[doc(hidden)]
44pub mod compat {
45    pub use http::header::InvalidHeaderName;
46    pub use http::header::InvalidHeaderValue;
47    pub use http::method::InvalidMethod;
48    pub use http::status::InvalidStatusCode;
49}