diff options
author | Tyler Murphy <tylerm@tylerm.dev> | 2023-07-02 18:45:41 -0400 |
---|---|---|
committer | Tyler Murphy <tylerm@tylerm.dev> | 2023-07-02 18:45:41 -0400 |
commit | cbb92993b592e6b68dbce7f283fb73d19fd1793e (patch) | |
tree | 975d41a0cd077cee9c0d9162b82256b4e8beb07b /src/http/response.rs | |
download | bashttp-cbb92993b592e6b68dbce7f283fb73d19fd1793e.tar.gz bashttp-cbb92993b592e6b68dbce7f283fb73d19fd1793e.tar.bz2 bashttp-cbb92993b592e6b68dbce7f283fb73d19fd1793e.zip |
hi
Diffstat (limited to '')
-rw-r--r-- | src/http/response.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/http/response.rs b/src/http/response.rs new file mode 100644 index 0000000..850f41e --- /dev/null +++ b/src/http/response.rs @@ -0,0 +1,42 @@ +use super::{code::Code, header::{HeaderMap, Header}}; + +#[derive(Debug, Clone)] +pub struct Response { + pub status: Code, + 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: Code::Success, + headers, + body: None + } + } + + pub fn deserialize(&self) -> String { + let mut string = String::new(); + + string += &format!("HTTP/1.1 {}\n", self.status.clone() as u16); + string += &self.headers.deserialize(); + + if let Some(body) = &self.body { + string += "\n"; + string += body; + } + + string + } +} |