From f28811942b923bc432f8e1b49e56cb50a639e23d Mon Sep 17 00:00:00 2001 From: YK Date: Fri, 10 May 2024 21:07:14 +0300 Subject: [PATCH] stage 3 attempt 2 --- src/main.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 909121e..0fe4519 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use std::{ fmt::Display, io::{Read, Write}, net::TcpListener }; +use std::{ fmt::Display, io::{BufRead, BufReader, Read, Write}, net::TcpListener }; use anyhow::Result; use thiserror::Error; @@ -14,14 +14,16 @@ fn main() -> Result<()> { for stream in listener.incoming() { match stream { Ok(mut stream) => { - let mut buf = String::new(); - let _read = stream.read_to_string(&mut buf); + let buf_reader = BufReader::new(&mut stream); - let mut data = buf.split("\r\n"); + let mut data = buf_reader + .lines() + .map(|result| result.unwrap()) + .take_while(|line| !line.is_empty()); - let _start @ (_method, path, _ver) = { + let (_method, path, _ver) = { let start_line = data.next().ok_or(E::InvalidRequest)?; // should be 500; - let mut parts = start_line.split_whitespace(); + let mut parts = start_line.split_whitespace().map(ToOwned::to_owned); let method = parts.next().ok_or(E::InvalidRequest)?; let path = parts.next().ok_or(E::InvalidRequest)?; let ver = parts.next().ok_or(E::InvalidRequest)?; @@ -29,7 +31,7 @@ fn main() -> Result<()> { (method, path, ver) }; - let code = match path { + let code = match path.as_str() { "/" => "200 OK", _ => "404 Not Found", };