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
#[derive(Debug, PartialEq)] pub enum HttpVersion { Null, Http11, } pub fn align_http_version(vec: &[u8]) -> [u8; 8] { if vec.len() != 8 { return [0; 8]; } let mut buf = [0; 8]; buf.copy_from_slice(vec); buf } #[macro_export] macro_rules! get_http_version_enum { ($v: expr) => { match $v { [72, 84, 84, 80, 47, 49, 46, 49] => HttpVersion::Http11, _ => HttpVersion::Null, } }; } #[test] fn get_http_version_enum_test_get() { assert_eq!( get_http_version_enum!(align_http_version(b"HTTP/1.1")), HttpVersion::Http11 ); } #[test] fn get_http_version_enum_test_null() { assert_eq!( get_http_version_enum!(align_http_version(b"NULL")), HttpVersion::Null ); } #[macro_export] macro_rules! get_http_version_enum_value { ($a: expr) => { match $a { HttpVersion::Http11 => vec![72u8, 84, 84, 80, 47, 49, 46, 49], _ => vec![], } }; } #[test] fn get_method_enum_value_test_get() { assert_eq!( get_http_version_enum_value!(HttpVersion::Http11), b"HTTP/1.1" ); } #[test] fn get_method_enum_value_test_null() { assert_eq!(get_http_version_enum_value!(HttpVersion::Null), b""); }