From 729f857374e072835ad8f1da9cc01bffa8add8d3 Mon Sep 17 00:00:00 2001 From: mo khan Date: Thu, 29 May 2025 10:26:43 -0600 Subject: feat: match path before returning response --- src/main.rs | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index 01e2d66..6bc9946 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,26 +11,24 @@ fn main() { pub fn start_server(bind: String) { let listener = TcpListener::bind(bind).unwrap(); for next_stream in listener.incoming() { - handle_connection(next_stream.unwrap()); + handle(next_stream.unwrap()); } } -fn handle_connection(mut stream: TcpStream) { +fn handle(mut stream: TcpStream) { let buf_reader = BufReader::new(&stream); - let http_request: Vec<_> = buf_reader - .lines() - .map(|result| result.unwrap()) - .take_while(|line| !line.is_empty()) - .collect(); + let request_line = buf_reader.lines().next().unwrap().unwrap(); - println!("{http_request:#?}"); + if request_line == "GET / HTTP/1.1" { + let status_line = "HTTP/1.1 200 OK"; + let contents = fs::read_to_string("./public/index.html").unwrap(); + let length = contents.len(); + let response = format!("{status_line}\r\nContent-Length: {length}\r\n\r\n{contents}"); - let status_line = "HTTP/1.1 200 OK"; - let contents = fs::read_to_string("./public/index.html").unwrap(); - let length = contents.len(); - let response = format!("{status_line}\r\nContent-Length: {length}\r\n\r\n{contents}"); - - stream.write_all(response.as_bytes()).unwrap(); + stream.write_all(response.as_bytes()).unwrap(); + } else { + // some other request + } } #[cfg(test)] -- cgit v1.2.3