summaryrefslogtreecommitdiff
path: root/src/http/response.rs
blob: 85430a442b46aec245d76681d057bb0649e89eee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use super::{header::{HeaderMap, Header}};

#[derive(Debug, Clone)]
pub struct Response {
    pub status: u16,
    pub headers: HeaderMap, 
    pub body: Option<String>
}

impl Response {

    pub fn new() -> Self {

        let mut headers = HeaderMap::new();
        headers.put(Header::new("Connection", "close"));

        let date = chrono::offset::Utc::now();
        headers.put(Header::new("Date", &date.to_rfc2822()));

        headers.put(Header::new("Server", "bashttp"));

        return Self {
            status: 200,
            headers,
            body: None
        }
    }

    pub fn deserialize(&self) -> String {
        let mut string = String::new();

        string += &format!("HTTP/1.1 {}\n", self.status);
        string += &self.headers.deserialize();
        
        if let Some(body) = &self.body {
            string += "\n";
            string += body;
        }

        string
    }
}