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

Add HEAD Method support

parent 2b30adc7
Branches main
No related tags found
1 merge request!1Initial feature merge
......@@ -6,7 +6,7 @@ use crate::handling::{
file_handlers::NamedFile,
request::Request,
response::{Outcome, Response, ResponseBody, Status},
routes::Data,
routes::Data, methods::Method,
};
use crate::setup::MountPoint;
......@@ -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();
for route in mountpoint.routes {
if route.method != request.method {
if (route.method != request.method) &&
((route.method != Method::Get) && (request.method == Method::Head)) {
continue;
}
if !route.compare_uri(mounted_request_uri) {
......@@ -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))
+ &success.headers.join("\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::Forward(_) => failure_handler(Status::NotFound),
......
......@@ -20,8 +20,13 @@ fn hashmap_to_string(map: &HashMap<&str, &str>) -> String {
result
}
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());
fn handle_static_hi(request: Request<'_>, data: Data) -> Outcome<Response, Status, Data> {
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 {
headers: vec![
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