browser-friendly frontend :3

This commit is contained in:
ari melody 2025-06-16 17:57:51 +01:00
parent bac3204572
commit 6bd7379df3
Signed by: ari
GPG key ID: CF99829C92678188
5 changed files with 259 additions and 46 deletions

View file

@ -1,4 +1,4 @@
use std::{collections::HashMap, io::{BufRead, BufReader, Result, Write}, net::{SocketAddr, TcpListener, TcpStream}};
use std::{collections::HashMap, io::{BufRead, BufReader, Error, ErrorKind, Result, Write}, net::{SocketAddr, TcpListener, TcpStream}};
use chrono::Local;
@ -51,13 +51,17 @@ impl<'a> Request<'a> {
pub fn new(stream: &'a TcpStream, lines: &'a Vec<String>) -> Result<Request<'a>> {
let request_line = lines[0].as_str();
let request_line_split: Vec<&str> = request_line.split(" ").collect();
if request_line_split.len() < 3 {
return Err(Error::new(ErrorKind::Other, "invalid request start-line"));
}
let method = request_line_split[0];
let path = request_line_split[1];
let mut path = request_line_split[1];
let version = request_line_split[2];
let mut query: HashMap<&'a str, &'a str> = HashMap::new();
match path.split_once("?") {
Some((_, query_string)) => {
match request_line_split[1].split_once("?") {
Some((path_without_query, query_string)) => {
path = path_without_query;
let query_splits: Vec<&'a str> = query_string.split("&").collect();
for pair in query_splits {
match pair.split_once("=") {