#![allow(dead_code)]
use std::collections::HashMap;
use std::io::Read;
use std::net::TcpStream;
pub type Headers = HashMap<String, String>;
pub fn read_line(stream: &mut TcpStream) -> String {
let mut temp_string = String::new();
loop {
let mut temp_array: [u8; 1] = [0];
if stream.read(&mut temp_array).is_ok() {
let temp_char = char::from_u32(temp_array[0] as u32).unwrap();
if temp_char == '\n' {
if temp_string.chars().last().unwrap() == '\r' {
temp_string.pop();
break;
}
}
temp_string.push(temp_char);
}
}
temp_string
}
pub fn parse_headers<S>(headers: S) -> Headers
where
S: Into<String>,
{
let headers: String = headers.into();
let mut temp_hashmap: Headers = HashMap::new();
for header in headers.split("\r\n") {
if let Some((name, mut value)) = header.split_once(":") {
value = value.trim();
temp_hashmap.insert(name.to_string(), value.to_string());
}
}
temp_hashmap
}
pub fn parse_header_line<S>(headers: &mut Headers, line: S) -> Option<()>
where
S: Into<String>,
{
let header: String = line.into();
if let Some((name, mut value)) = header.split_once(":") {
value = value.trim();
headers.insert(name.to_string(), value.to_string());
Some(())
} else {
None
}
}