lava_http/request/
parse.rs1use std::collections::HashMap;
2
3use crate::func::hashmapper::hashmapify_headers;
4use super::req::Request;
5
6pub fn parse_request_header(header: String) -> Request{
7 let body_split: Vec<&str> = header.split("\r\n\r\n").collect();
8
9 let request_header: String = String::from(body_split[0]);
10 let mut request_body: String = String::from("");
11
12 if body_split.len() > 1{
13 request_body = String::from(body_split[1]);
14 }
15
16 let mut raw_headers: Vec<&str> = request_header.split("\r\n").collect();
17 let raw_title_header: &str = raw_headers[0];
18
19 raw_headers.remove(0);
20
21 let raw_title_header_string: String = String::from(raw_title_header);
22 let title_header: Vec<&str> = raw_title_header_string.split(" ").collect();
23
24 let method: String = String::from(title_header[0]);
25 let mut path: String = String::from("");
26
27 if title_header.len() > 1{
28 path = String::from(title_header[1]);
29 }
30
31 let hashmapped_headers: HashMap<String, String> = hashmapify_headers(raw_headers);
32
33 return Request {
34 method: method,
35 path: path,
36 body: request_body,
37 headers: hashmapped_headers
38 };
39}