55 lines
1.2 KiB
Rust
55 lines
1.2 KiB
Rust
use crate::HTTPVersion;
|
|
|
|
#[derive(Debug, PartialEq, Clone, Copy)]
|
|
pub enum HTTPStatusCode {
|
|
Http200,
|
|
Http400,
|
|
Http403,
|
|
Http404,
|
|
Http500,
|
|
}
|
|
|
|
impl Into<String> 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<String> 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;
|
|
}
|
|
}
|