diff options
| author | mo khan <mo@mokhan.ca> | 2025-05-29 10:26:43 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-05-29 10:26:43 -0600 |
| commit | 729f857374e072835ad8f1da9cc01bffa8add8d3 (patch) | |
| tree | d92496d0e7fedef2d53ea5cf890003ec32a7678b /src | |
| parent | cbbea4738139a31fa9c95e15e2b9cba166111e15 (diff) | |
feat: match path before returning response
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 26 |
1 files changed, 12 insertions, 14 deletions
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)] |
