browser-friendly frontend :3
This commit is contained in:
parent
bac3204572
commit
6bd7379df3
5 changed files with 259 additions and 46 deletions
12
src/http.rs
12
src/http.rs
|
|
@ -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("=") {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue