stage 3 attempt 2

This commit is contained in:
YK 2024-05-10 21:07:14 +03:00
parent 37dd2cfd5a
commit f28811942b

View File

@ -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",
};