1use super::QpackHeaderFieldRef;
4
5pub const QPACK_STATIC_TABLE_LEN: usize = 99;
7
8pub struct QpackStaticTable;
10
11impl QpackStaticTable {
12 pub const fn len() -> usize {
14 QPACK_STATIC_TABLE_LEN
15 }
16
17 pub const fn is_empty() -> bool {
19 false
20 }
21
22 pub fn get(index: usize) -> Option<QpackHeaderFieldRef<'static>> {
24 STATIC_TABLE.get(index).copied()
25 }
26}
27
28const STATIC_TABLE: [QpackHeaderFieldRef<'static>; QPACK_STATIC_TABLE_LEN] = [
29 QpackHeaderFieldRef::new(b":authority", b""),
30 QpackHeaderFieldRef::new(b":path", b"/"),
31 QpackHeaderFieldRef::new(b"age", b"0"),
32 QpackHeaderFieldRef::new(b"content-disposition", b""),
33 QpackHeaderFieldRef::new(b"content-length", b"0"),
34 QpackHeaderFieldRef::new(b"cookie", b""),
35 QpackHeaderFieldRef::new(b"date", b""),
36 QpackHeaderFieldRef::new(b"etag", b""),
37 QpackHeaderFieldRef::new(b"if-modified-since", b""),
38 QpackHeaderFieldRef::new(b"if-none-match", b""),
39 QpackHeaderFieldRef::new(b"last-modified", b""),
40 QpackHeaderFieldRef::new(b"link", b""),
41 QpackHeaderFieldRef::new(b"location", b""),
42 QpackHeaderFieldRef::new(b"referer", b""),
43 QpackHeaderFieldRef::new(b"set-cookie", b""),
44 QpackHeaderFieldRef::new(b":method", b"CONNECT"),
45 QpackHeaderFieldRef::new(b":method", b"DELETE"),
46 QpackHeaderFieldRef::new(b":method", b"GET"),
47 QpackHeaderFieldRef::new(b":method", b"HEAD"),
48 QpackHeaderFieldRef::new(b":method", b"OPTIONS"),
49 QpackHeaderFieldRef::new(b":method", b"POST"),
50 QpackHeaderFieldRef::new(b":method", b"PUT"),
51 QpackHeaderFieldRef::new(b":scheme", b"http"),
52 QpackHeaderFieldRef::new(b":scheme", b"https"),
53 QpackHeaderFieldRef::new(b":status", b"103"),
54 QpackHeaderFieldRef::new(b":status", b"200"),
55 QpackHeaderFieldRef::new(b":status", b"304"),
56 QpackHeaderFieldRef::new(b":status", b"404"),
57 QpackHeaderFieldRef::new(b":status", b"503"),
58 QpackHeaderFieldRef::new(b"accept", b"*/*"),
59 QpackHeaderFieldRef::new(b"accept", b"application/dns-message"),
60 QpackHeaderFieldRef::new(b"accept-encoding", b"gzip, deflate, br"),
61 QpackHeaderFieldRef::new(b"accept-ranges", b"bytes"),
62 QpackHeaderFieldRef::new(b"access-control-allow-headers", b"cache-control"),
63 QpackHeaderFieldRef::new(b"access-control-allow-headers", b"content-type"),
64 QpackHeaderFieldRef::new(b"access-control-allow-origin", b"*"),
65 QpackHeaderFieldRef::new(b"cache-control", b"max-age=0"),
66 QpackHeaderFieldRef::new(b"cache-control", b"max-age=2592000"),
67 QpackHeaderFieldRef::new(b"cache-control", b"max-age=604800"),
68 QpackHeaderFieldRef::new(b"cache-control", b"no-cache"),
69 QpackHeaderFieldRef::new(b"cache-control", b"no-store"),
70 QpackHeaderFieldRef::new(b"cache-control", b"public, max-age=31536000"),
71 QpackHeaderFieldRef::new(b"content-encoding", b"br"),
72 QpackHeaderFieldRef::new(b"content-encoding", b"gzip"),
73 QpackHeaderFieldRef::new(b"content-type", b"application/dns-message"),
74 QpackHeaderFieldRef::new(b"content-type", b"application/javascript"),
75 QpackHeaderFieldRef::new(b"content-type", b"application/json"),
76 QpackHeaderFieldRef::new(b"content-type", b"application/x-www-form-urlencoded"),
77 QpackHeaderFieldRef::new(b"content-type", b"image/gif"),
78 QpackHeaderFieldRef::new(b"content-type", b"image/jpeg"),
79 QpackHeaderFieldRef::new(b"content-type", b"image/png"),
80 QpackHeaderFieldRef::new(b"content-type", b"text/css"),
81 QpackHeaderFieldRef::new(b"content-type", b"text/html; charset=utf-8"),
82 QpackHeaderFieldRef::new(b"content-type", b"text/plain"),
83 QpackHeaderFieldRef::new(b"content-type", b"text/plain;charset=utf-8"),
84 QpackHeaderFieldRef::new(b"range", b"bytes=0-"),
85 QpackHeaderFieldRef::new(b"strict-transport-security", b"max-age=31536000"),
86 QpackHeaderFieldRef::new(
87 b"strict-transport-security",
88 b"max-age=31536000; includesubdomains",
89 ),
90 QpackHeaderFieldRef::new(
91 b"strict-transport-security",
92 b"max-age=31536000; includesubdomains; preload",
93 ),
94 QpackHeaderFieldRef::new(b"vary", b"accept-encoding"),
95 QpackHeaderFieldRef::new(b"vary", b"origin"),
96 QpackHeaderFieldRef::new(b"x-content-type-options", b"nosniff"),
97 QpackHeaderFieldRef::new(b"x-xss-protection", b"1; mode=block"),
98 QpackHeaderFieldRef::new(b":status", b"100"),
99 QpackHeaderFieldRef::new(b":status", b"204"),
100 QpackHeaderFieldRef::new(b":status", b"206"),
101 QpackHeaderFieldRef::new(b":status", b"302"),
102 QpackHeaderFieldRef::new(b":status", b"400"),
103 QpackHeaderFieldRef::new(b":status", b"403"),
104 QpackHeaderFieldRef::new(b":status", b"421"),
105 QpackHeaderFieldRef::new(b":status", b"425"),
106 QpackHeaderFieldRef::new(b":status", b"500"),
107 QpackHeaderFieldRef::new(b"accept-language", b""),
108 QpackHeaderFieldRef::new(b"access-control-allow-credentials", b"FALSE"),
109 QpackHeaderFieldRef::new(b"access-control-allow-credentials", b"TRUE"),
110 QpackHeaderFieldRef::new(b"access-control-allow-headers", b"*"),
111 QpackHeaderFieldRef::new(b"access-control-allow-methods", b"get"),
112 QpackHeaderFieldRef::new(b"access-control-allow-methods", b"get, post, options"),
113 QpackHeaderFieldRef::new(b"access-control-allow-methods", b"options"),
114 QpackHeaderFieldRef::new(b"access-control-expose-headers", b"content-length"),
115 QpackHeaderFieldRef::new(b"access-control-request-headers", b"content-type"),
116 QpackHeaderFieldRef::new(b"access-control-request-method", b"get"),
117 QpackHeaderFieldRef::new(b"access-control-request-method", b"post"),
118 QpackHeaderFieldRef::new(b"alt-svc", b"clear"),
119 QpackHeaderFieldRef::new(b"authorization", b""),
120 QpackHeaderFieldRef::new(
121 b"content-security-policy",
122 b"script-src 'none'; object-src 'none'; base-uri 'none'",
123 ),
124 QpackHeaderFieldRef::new(b"early-data", b"1"),
125 QpackHeaderFieldRef::new(b"expect-ct", b""),
126 QpackHeaderFieldRef::new(b"forwarded", b""),
127 QpackHeaderFieldRef::new(b"if-range", b""),
128 QpackHeaderFieldRef::new(b"origin", b""),
129 QpackHeaderFieldRef::new(b"purpose", b"prefetch"),
130 QpackHeaderFieldRef::new(b"server", b""),
131 QpackHeaderFieldRef::new(b"timing-allow-origin", b"*"),
132 QpackHeaderFieldRef::new(b"upgrade-insecure-requests", b"1"),
133 QpackHeaderFieldRef::new(b"user-agent", b""),
134 QpackHeaderFieldRef::new(b"x-forwarded-for", b""),
135 QpackHeaderFieldRef::new(b"x-frame-options", b"deny"),
136 QpackHeaderFieldRef::new(b"x-frame-options", b"sameorigin"),
137];