improv: #5 accept http 1.0 request version
This commit is contained in:
parent
617c084782
commit
65e188bcf8
@ -18,12 +18,13 @@ const HTTP_METHODS: [&'static str; 1] = ["POST"];
|
||||
const HTTP_TARGETS: [&'static str; 3] = ["/validate/", "/get/", "/refresh/"];
|
||||
|
||||
lazy_static! {
|
||||
static ref HTTP_VERSION_REGEX: Regex = Regex::new("^HTTP/(1.1|2)$").unwrap();
|
||||
static ref HTTP_VERSION_REGEX: Regex = Regex::new("^HTTP/(1.1|1.0|2)$").unwrap();
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum HTTPVersion {
|
||||
Http1,
|
||||
Http1_0,
|
||||
Http1_1,
|
||||
Http2,
|
||||
Unknown,
|
||||
}
|
||||
@ -31,7 +32,8 @@ pub enum HTTPVersion {
|
||||
impl Into<String> for HTTPVersion {
|
||||
fn into(self) -> String {
|
||||
match self {
|
||||
Self::Http1 => "HTTP/1.1".to_string(),
|
||||
Self::Http1_0 => "HTTP/1.0".to_string(),
|
||||
Self::Http1_1 => "HTTP/1.1".to_string(),
|
||||
Self::Http2 => "HTTP/2".to_string(),
|
||||
Self::Unknown => "UNKNOWN".to_string(),
|
||||
}
|
||||
@ -42,7 +44,8 @@ impl Into<String> for HTTPVersion {
|
||||
impl From<&String> for HTTPVersion {
|
||||
fn from(http_version: &String) -> Self {
|
||||
match http_version.as_str() {
|
||||
"HTTP/1.1" => Self::Http1,
|
||||
"HTTP/1.0" => Self::Http1_0,
|
||||
"HTTP/1.1" => Self::Http1_1,
|
||||
"HTTP/2" => Self::Http2,
|
||||
_ => Self::Unknown,
|
||||
}
|
||||
@ -85,7 +88,6 @@ impl HTTPStartLine {
|
||||
if !Self::check_target(&target) {
|
||||
return Err("target validation failed, unvalid target");
|
||||
}
|
||||
|
||||
if !Self::check_version(&version) {
|
||||
return Err("http version validation failed, unknown version");
|
||||
}
|
||||
@ -272,7 +274,7 @@ fn test_handle_request() {
|
||||
is_valid: bool,
|
||||
}
|
||||
|
||||
let test_cases: [(String, Expect); 10] = [
|
||||
let test_cases: [(String, Expect); 11] = [
|
||||
(
|
||||
"POST /get/ HTTP/1.1\r\n\r\n".to_string(),
|
||||
Expect {
|
||||
@ -289,6 +291,14 @@ fn test_handle_request() {
|
||||
is_valid: true,
|
||||
},
|
||||
),
|
||||
(
|
||||
"POST /validate/ HTTP/1.0\r\n\r\n".to_string(),
|
||||
Expect {
|
||||
start_line: "POST /validate/ HTTP/1.0".to_string(),
|
||||
body: None,
|
||||
is_valid: true,
|
||||
},
|
||||
),
|
||||
(
|
||||
"GET / HTTP/1.1\r\n\r\n".to_string(),
|
||||
Expect {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user