ntex_http/
lib.rs

1//! Http protocol support.
2#![deny(rust_2018_idioms, unreachable_pub, missing_debug_implementations)]
3
4pub mod body;
5pub mod error;
6mod map;
7mod serde;
8mod value;
9
10pub use self::error::Error;
11pub use self::map::HeaderMap;
12pub use self::value::HeaderValue;
13
14#[doc(hidden)]
15pub use self::map::Value;
16
17// re-exports
18pub use http::header::HeaderName;
19pub use http::uri::{self, Uri};
20pub use http::{Method, StatusCode, Version};
21
22/// Convert http::HeaderMap to a HeaderMap
23impl From<http::HeaderMap> for HeaderMap {
24    fn from(map: http::HeaderMap) -> HeaderMap {
25        let mut new_map = HeaderMap::with_capacity(map.capacity());
26        for (h, v) in map.iter() {
27            new_map.append(h.clone(), HeaderValue::from(v));
28        }
29        new_map
30    }
31}
32
33pub mod header {
34    //! Various http headers
35
36    #[doc(hidden)]
37    pub use crate::map::{AsName, Either, GetAll, Iter, Value};
38    pub use crate::value::{HeaderValue, InvalidHeaderValue, ToStrError};
39
40    pub use http::header::{HeaderName, InvalidHeaderName};
41    pub use http::header::{
42        ACCEPT, ACCEPT_CHARSET, ACCEPT_ENCODING, ACCEPT_LANGUAGE, ACCEPT_RANGES,
43        ACCESS_CONTROL_ALLOW_CREDENTIALS, ACCESS_CONTROL_ALLOW_HEADERS,
44        ACCESS_CONTROL_ALLOW_METHODS, ACCESS_CONTROL_ALLOW_ORIGIN,
45        ACCESS_CONTROL_EXPOSE_HEADERS, ACCESS_CONTROL_MAX_AGE,
46        ACCESS_CONTROL_REQUEST_HEADERS, ACCESS_CONTROL_REQUEST_METHOD, AGE, ALLOW, ALT_SVC,
47        AUTHORIZATION, CACHE_CONTROL, CONNECTION, CONTENT_DISPOSITION, CONTENT_ENCODING,
48        CONTENT_LANGUAGE, CONTENT_LENGTH, CONTENT_LOCATION, CONTENT_RANGE,
49        CONTENT_SECURITY_POLICY, CONTENT_SECURITY_POLICY_REPORT_ONLY, CONTENT_TYPE, COOKIE,
50        DATE, DNT, ETAG, EXPECT, EXPIRES, FORWARDED, FROM, HOST, IF_MATCH,
51        IF_MODIFIED_SINCE, IF_NONE_MATCH, IF_RANGE, IF_UNMODIFIED_SINCE, LAST_MODIFIED,
52        LINK, LOCATION, MAX_FORWARDS, ORIGIN, PRAGMA, PROXY_AUTHENTICATE,
53        PROXY_AUTHORIZATION, PUBLIC_KEY_PINS, PUBLIC_KEY_PINS_REPORT_ONLY, RANGE, REFERER,
54        REFERRER_POLICY, REFRESH, RETRY_AFTER, SEC_WEBSOCKET_ACCEPT,
55        SEC_WEBSOCKET_EXTENSIONS, SEC_WEBSOCKET_KEY, SEC_WEBSOCKET_PROTOCOL,
56        SEC_WEBSOCKET_VERSION, SERVER, SET_COOKIE, STRICT_TRANSPORT_SECURITY, TE, TRAILER,
57        TRANSFER_ENCODING, UPGRADE, UPGRADE_INSECURE_REQUESTS, USER_AGENT, VARY, VIA,
58        WARNING, WWW_AUTHENTICATE, X_CONTENT_TYPE_OPTIONS, X_DNS_PREFETCH_CONTROL,
59        X_FRAME_OPTIONS, X_XSS_PROTECTION,
60    };
61}
62
63#[doc(hidden)]
64pub mod compat {
65    pub use http::header::InvalidHeaderName;
66    pub use http::header::InvalidHeaderValue;
67    pub use http::method::InvalidMethod;
68    pub use http::status::InvalidStatusCode;
69    pub use http::uri::InvalidUri;
70}