1use webparse::{
2 http2::{frame::Headers, Decoder, DEFAULT_SETTINGS_HEADER_TABLE_SIZE},
3 Helper, Method, Scheme,
4};
5
6use algorithm::buf::{BinaryMut, Bt, BtMut};
7fn parse_header() {
9 let mut decoder = Decoder::new();
10 let buf = Helper::hex_to_vec("8286 8441 8cf1 e3c2 e5f2 3a6b a0ab 90f4 ff");
12 let buf_len = buf.len();
13 let mut header = Headers::empty();
14 let size = header
15 .parse(
16 BinaryMut::from(buf),
17 &mut decoder,
18 DEFAULT_SETTINGS_HEADER_TABLE_SIZE,
19 )
20 .unwrap();
21 assert!(size == buf_len);
22 assert!(header.method() == &Some(Method::Get));
23 assert!(header.path() == &Some("/".to_string()));
24 assert!(header.scheme() == &Some(Scheme::Http));
25 assert!(header.authority() == &Some("www.example.com".to_string()));
26
27 let buf = Helper::hex_to_vec("8286 84be 5886 a8eb 1064 9cbf");
29 let buf_len = buf.len();
30 let mut header = Headers::empty();
31 let size = header
32 .parse(
33 BinaryMut::from(buf),
34 &mut decoder,
35 DEFAULT_SETTINGS_HEADER_TABLE_SIZE,
36 )
37 .unwrap();
38 assert!(size == buf_len);
39 assert!(header.method() == &Some(Method::Get));
40 assert!(header.path() == &Some("/".to_string()));
41 assert!(header.scheme() == &Some(Scheme::Http));
42 assert!(header.authority() == &Some("www.example.com".to_string()));
43 assert!(header.fields()["cache-control"] == "no-cache");
44
45 let buf = Helper::hex_to_vec("8287 85bf 4088 25a8 49e9 5ba9 7d7f 8925 a849 e95b b8e8 b4bf ");
47 let buf_len = buf.len();
48 let mut header = Headers::empty();
49 let size = header
50 .parse(
51 BinaryMut::from(buf),
52 &mut decoder,
53 DEFAULT_SETTINGS_HEADER_TABLE_SIZE,
54 )
55 .unwrap();
56 assert!(size == buf_len);
57 assert!(header.method() == &Some(Method::Get));
58 assert!(header.path() == &Some("/index.html".to_string()));
59 assert!(header.scheme() == &Some(Scheme::Https));
60 assert!(header.authority() == &Some("www.example.com".to_string()));
61 assert!(header.fields()["custom-key"] == "custom-value");
62}
63
64fn main() {
65 parse_header();
66}