mod error;
mod status;
use std::{
io::{Read, Write},
net::TcpStream,
str,
};
pub fn handle(mut stream: TcpStream) {
let mut buffer = [0; 1024];
loop {
match stream.read(&mut buffer) {
Ok(0) => {
eprintln!("connection closed");
break;
}
Ok(n) => {
if let Ok(request) = str::from_utf8(&buffer[0..n]) {
if let Err(e) = stream.write_all(
match request.trim() {
"status" => status::response(),
_ => error::response("invalid request"),
}
.as_bytes(),
) {
eprintln!("failed to write to stream: {}", e);
break;
}
} else {
println!("invalid sequence");
break;
}
}
Err(e) => {
eprintln!("failed to read from stream: {}", e);
break;
}
}
}
}