use std::vec::Vec; #[derive(Copy, Clone)] pub enum Status { Success = 20, RedirectPermanent = 31, NotFound = 51, ProxyRequestRefused = 53, BadRequest = 59, } pub struct Header { status: Status, meta: String, } impl Header { pub fn new(status: Status, meta: &str) -> Header { Header { status: status, meta: meta.to_string(), } } pub fn format(&self) -> String { format!("{} {}\r\n", self.status as u8, self.meta) } pub fn to_vec(&self) -> Vec { self.format().as_bytes().to_vec() } } pub fn redirect_permanent(meta: &str) -> Header { Header::new(Status::RedirectPermanent, meta) } pub fn not_found() -> Header { Header::new(Status::NotFound, "not found") } pub fn proxy_request_refused() -> Header { Header::new(Status::ProxyRequestRefused, "proxy request refused") } pub fn bad_request() -> Header { Header::new(Status::BadRequest, "bad request") }