Skip to main content

lava_http/request/
parse.rs

1use 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}