http1/headers/
mod.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#![allow(clippy::module_inception)]

mod headers;
mod name;
pub(crate) mod non_empty_list;
mod value;

pub use headers::*;
pub use name::*;
pub use value::*;

// Headers

macro_rules! define_header_names {
    ($($name:ident => $value:expr),* $(,)?) => {
        $(
            pub const $name: HeaderName = HeaderName::const_static($value);
        )*

        pub(crate) fn get_header_name(name: &str) -> Option<HeaderName> {
            match name {
                $(
                    _ if $value.eq_ignore_ascii_case(name) => Some(HeaderName::const_static($value)),
                )*
                _ => None
            }
        }
    };
}

define_header_names! {
    CONTENT_LENGTH => "Content-Length",
    CONTENT_TYPE => "Content-Type",
    CONTENT_ENCODING => "Content-Encoding",
    TRANSFER_ENCODING => "Transfer-Encoding",
    CONTENT_DISPOSITION => "Content-Disposition",
    ACCEPT => "Accept",
    ACCEPT_ENCODING => "Accept-Encoding",
    ACCEPT_LANGUAGE => "Accept-Language",
    AUTHORIZATION => "Authorization",
    CACHE_CONTROL => "Cache-Control",
    CONNECTION => "Connection",
    COOKIE => "Cookie",
    SET_COOKIE => "Set-Cookie",
    HOST => "Host",
    USER_AGENT => "User-Agent",
    REFERER => "Referer",
    UPGRADE => "Upgrade",
    LOCATION => "Location",
    X_FORWARDED_FOR => "X-Forwarded-For",
    X_REAL_IP => "X-Real-IP", // NON-STANDARD
    X_CLIENT_IP => "X-Client-IP", // NON-STANDARD
    X_FRAME_OPTIONS => "X-Frame-Options",
    WWW_AUTHENTICATE => "WWW-Authenticate",
    FORWARDED => "Forwarded",
    ORIGIN => "Origin",
    DATE => "Date",
    ETAG => "ETag",
    LAST_MODIFIED => "Last-Modified",
    IF_MATCH => "If-Match",
    IF_NONE_MATCH => "If-None-Match",
    IF_MODIFIED_SINCE => "If-Modified-Since",
    IF_UNMODIFIED_SINCE => "If-Unmodified-Since",
    RANGE => "Range",
    ACCEPT_RANGES => "Accept-Ranges",
    RETRY_AFTER => "Retry-After",
    VARY => "Vary",
    EXPECT => "Expect",
    ALLOW => "Allow",
    ACCESS_CONTROL_ALLOW_ORIGIN => "Access-Control-Allow-Origin",
    ACCESS_CONTROL_ALLOW_HEADERS => "Access-Control-Allow-Headers",
    ACCESS_CONTROL_ALLOW_METHODS => "Access-Control-Allow-Methods",
    ACCESS_CONTROL_MAX_AGE => "Access-Control-Max-Age",
    ACCESS_CONTROL_ALLOW_CREDENTIALS => "Access-Control-Allow-Credentials",
    ACCESS_CONTROL_EXPOSE_HEADERS => "Access-Control-Expose-Headers",
    ACCESS_CONTROL_REQUEST_HEADERS => "Access-Control-Request-Headers",
    ACCESS_CONTROL_REQUEST_METHOD => "Access-Control-Request-Method",
    CONTENT_SECURITY_POLICY => "Content-Security-Policy",
    CONTENT_SECURITY_POLICY_REPORT_ONLY => "Content-Security-Policy-Report-Only",
    FEATURE_POLICY => "Feature-Policy",
    PERMISSIONS_POLICY => "Permissions-Policy",

    // Web sockets
    SEC_WEBSOCKET_ACCEPT => "Sec-WebSocket-Accept",
    SEC_WEBSOCKET_KEY => "Sec-WebSocket-Key",
    SEC_WEBSOCKET_VERSION => "Sec-WebSocket-Version",
    SEC_WEBSOCKET_PROTOCOL => "Sec-WebSocket-Protocol",
    SEC_WEBSOCKET_EXTENSIONS => "Sec-WebSocket-Extensions",
}