summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-05-29 10:26:43 -0600
committermo khan <mo@mokhan.ca>2025-05-29 10:26:43 -0600
commit729f857374e072835ad8f1da9cc01bffa8add8d3 (patch)
treed92496d0e7fedef2d53ea5cf890003ec32a7678b
parentcbbea4738139a31fa9c95e15e2b9cba166111e15 (diff)
feat: match path before returning response
-rw-r--r--src/main.rs26
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)]