use crate::HTTPVersion; #[derive(Debug, PartialEq, Clone, Copy)] pub enum HTTPStatusCode { Http200, Http400, Http403, Http404, Http500, } impl Into for HTTPStatusCode { fn into(self) -> String { match self { Self::Http200 => "200".to_string(), Self::Http400 => "400".to_string(), Self::Http404 => "404".to_string(), Self::Http403 => "403".to_string(), Self::Http500 => "500".to_string(), } } } pub struct HTTPStatusLine { version: HTTPVersion, status_code: HTTPStatusCode, } impl Default for HTTPStatusLine { fn default() -> HTTPStatusLine { HTTPStatusLine { version: HTTPVersion::Http1_1, status_code: HTTPStatusCode::Http400, } } } impl Into for HTTPStatusLine { fn into(self) -> String { let version: String = self.version.into(); let status_code: String = self.status_code.into(); format! {"{} {}", version, status_code} } } impl HTTPStatusLine { pub fn get_status_code(&self) -> HTTPStatusCode { self.status_code } pub fn set_status_code(&mut self, code: HTTPStatusCode) { self.status_code = code; } }