Skip to content
Snippets Groups Projects
Commit 21a170df authored by codecraft's avatar codecraft :crocodile:
Browse files

Add HEAD Method support

parent 2b30adc7
No related branches found
No related tags found
1 merge request!1Initial feature merge
...@@ -6,7 +6,7 @@ use crate::handling::{ ...@@ -6,7 +6,7 @@ use crate::handling::{
file_handlers::NamedFile, file_handlers::NamedFile,
request::Request, request::Request,
response::{Outcome, Response, ResponseBody, Status}, response::{Outcome, Response, ResponseBody, Status},
routes::Data, routes::Data, methods::Method,
}; };
use crate::setup::MountPoint; use crate::setup::MountPoint;
...@@ -103,7 +103,8 @@ pub async fn handle_connection(mut stream: TcpStream, mountpoints: Vec<MountPoin ...@@ -103,7 +103,8 @@ pub async fn handle_connection(mut stream: TcpStream, mountpoints: Vec<MountPoin
} }
let mounted_request_uri = request.uri.strip_prefix(mountpoint.mountpoint).unwrap(); let mounted_request_uri = request.uri.strip_prefix(mountpoint.mountpoint).unwrap();
for route in mountpoint.routes { for route in mountpoint.routes {
if route.method != request.method { if (route.method != request.method) &&
((route.method != Method::Get) && (request.method == Method::Head)) {
continue; continue;
} }
if !route.compare_uri(mounted_request_uri) { if !route.compare_uri(mounted_request_uri) {
...@@ -130,7 +131,11 @@ pub async fn handle_connection(mut stream: TcpStream, mountpoints: Vec<MountPoin ...@@ -130,7 +131,11 @@ pub async fn handle_connection(mut stream: TcpStream, mountpoints: Vec<MountPoin
format!("HTTP/1.1 {}\r\n", success.status.unwrap_or(Status::Ok)) format!("HTTP/1.1 {}\r\n", success.status.unwrap_or(Status::Ok))
+ &success.headers.join("\r\n") + &success.headers.join("\r\n")
+ "\r\n\r\n", + "\r\n\r\n",
success.body.get_data(), if request.method == Method::Head {
vec![]
} else {
success.body.get_data()
}
), ),
Outcome::Failure(error) => failure_handler(error), Outcome::Failure(error) => failure_handler(error),
Outcome::Forward(_) => failure_handler(Status::NotFound), Outcome::Forward(_) => failure_handler(Status::NotFound),
......
...@@ -20,8 +20,13 @@ fn hashmap_to_string(map: &HashMap<&str, &str>) -> String { ...@@ -20,8 +20,13 @@ fn hashmap_to_string(map: &HashMap<&str, &str>) -> String {
result result
} }
fn handle_static_hi(request: Request<'_>, _data: Data) -> Outcome<Response, Status, Data> { fn handle_static_hi(request: Request<'_>, data: Data) -> Outcome<Response, Status, Data> {
let response = hashmap_to_string(&request.get_form_keys(vec!["asdf", "jkj"]).unwrap()); let keys = if let Ok(keys) = request.get_form_keys(vec!["asdf", "jkl;"]) {
keys
} else {
return Outcome::Forward(data);
};
let response = hashmap_to_string(&keys);
Outcome::Success(Response { Outcome::Success(Response {
headers: vec![ headers: vec![
format!("Content-Length: {}", response.len()), format!("Content-Length: {}", response.len()),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment