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
43
44
45
46
47
48
49
50
51
52
53
54
|
use std::vec::Vec;
#[derive(Copy, Clone)]
pub enum Status {
Success = 20,
RedirectPermanent = 31,
PermanentFailure = 50,
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<u8> {
self.format().as_bytes().to_vec()
}
}
pub fn redirect_permanent(meta: &str) -> Header {
Header::new(Status::RedirectPermanent, meta)
}
pub fn permanent_failure() -> Header {
Header::new(Status::PermanentFailure, "permanent failure")
}
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")
}
|