pub struct Header { /* private fields */ }Implementations§
Source§impl Header
impl Header
pub fn new(writer: BufWriter<TcpStream>, content: String) -> Header
Sourcepub fn set_header<K: Display, V: Display>(self, key: K, value: V) -> Header
pub fn set_header<K: Display, V: Display>(self, key: K, value: V) -> Header
Examples found in repository?
examples/body.rs (line 15)
12fn say_hi(request: Request, response: Response) -> io::Result<()> {
13 if request.body.is_empty() {
14 response.status_code(StatusCode::BadRequest)
15 .set_header("Content-Type", "text/html").flush()?
16 .add_to_body("<h1>400 Bad Request</h1>")
17 .add_to_body("<p>No message was delivered via body</p>").flush()?;
18
19 return Ok(());
20 };
21
22 let content = format!("{{ \"message\": \"{}\" }}", request.body);
23
24 response.json(content)?;
25
26 Ok(())
27}
28
29fn not_found(request: Request, response: Response) -> io::Result<()> {
30 let content = format!("<p>Page '{}' could not been found</p>", request.uri);
31
32 response.status_code(StatusCode::NotFound)
33 .set_header("Content-Type", "text/html").flush()?
34 .add_to_body("<h1>404 Not Found</h1>")
35 .add_to_body(content).flush()?;
36
37 Ok(())
38}More examples
examples/hello_world.rs (line 21)
7fn main() -> io::Result<()> {
8 let listener = TcpListener::bind("127.0.0.1:8080")?;
9
10 for stream in listener.incoming().filter_map(Result::ok) {
11 let (request, response) = Http::from(stream)?;
12
13 println!("New Request: ");
14 println!("- method: {:?}", request.method);
15 println!("- uri: {:?}", request.uri);
16 println!("- params: {:?}", request.params);
17 println!("- http_version: {:?}", request.http_version);
18 println!("- headers: {:?}", request.headers);
19
20 response.status_code(StatusCode::Ok)
21 .set_header("Content-Type", "text/html").flush()?
22 .add_to_body("<h1>Hello from Rust!</h1>").flush()?;
23 }
24
25 Ok(())
26}examples/calculator.rs (line 14)
11fn add(request: Request, response: Response) -> io::Result<()> {
12 let Some(a) = request.params.get("a") else {
13 response.status_code(StatusCode::BadRequest)
14 .set_header("Content-Type", "text/html").flush()?
15 .add_to_body("<h1>400 Bad Request</h1>")
16 .add_to_body("<p>Parameter 'a' not found</p>").flush()?;
17
18 return Ok(());
19 };
20
21 let Some(b) = request.params.get("b") else {
22 response.status_code(StatusCode::BadRequest)
23 .set_header("Content-Type", "text/html").flush()?
24 .add_to_body("<h1>400 Bad Request</h1>")
25 .add_to_body("<p>Parameter 'b' not found</p>").flush()?;
26
27 return Ok(());
28 };
29
30 let Ok(a) = a.parse::<u8>() else {
31 response.status_code(StatusCode::BadRequest)
32 .set_header("Content-Type", "text/html").flush()?
33 .add_to_body("<h1>400 Bad Request</h1>")
34 .add_to_body("<p>Parameter 'a' can only be a number from 0 to 255</p>").flush()?;
35
36 return Ok(());
37 };
38
39 let Ok(b) = b.parse::<u8>() else {
40 response.status_code(StatusCode::BadRequest)
41 .set_header("Content-Type", "text/html").flush()?
42 .add_to_body("<h1>400 Bad Request</h1>")
43 .add_to_body("<p>Parameter 'b' can only be a number from 0 to 255</p>").flush()?;
44
45 return Ok(());
46 };
47
48 let content = format!("<h1>{} + {} = {}</h1>", a, b, a as u16 + b as u16);
49
50 response.status_code(StatusCode::Ok)
51 .set_header("Content-Type", "text/html").flush()?
52 .add_to_body(content).flush()?;
53
54 Ok(())
55}
56
57fn sub(request: Request, response: Response) -> io::Result<()> {
58 let Some(a) = request.params.get("a") else {
59 response.status_code(StatusCode::BadRequest)
60 .set_header("Content-Type", "text/html").flush()?
61 .add_to_body("<h1>400 Bad Request</h1>")
62 .add_to_body("<p>Parameter 'a' not found</p>").flush()?;
63
64 return Ok(());
65 };
66
67 let Some(b) = request.params.get("b") else {
68 response.status_code(StatusCode::BadRequest)
69 .set_header("Content-Type", "text/html").flush()?
70 .add_to_body("<h1>400 Bad Request</h1>")
71 .add_to_body("<p>Parameter 'b' not found</p>").flush()?;
72
73 return Ok(());
74 };
75
76 let Ok(a) = a.parse::<u8>() else {
77 response.status_code(StatusCode::BadRequest)
78 .set_header("Content-Type", "text/html").flush()?
79 .add_to_body("<h1>400 Bad Request</h1>")
80 .add_to_body("<p>Parameter 'a' can only be a number from 0 to 255</p>").flush()?;
81
82 return Ok(());
83 };
84
85 let Ok(b) = b.parse::<u8>() else {
86 response.status_code(StatusCode::BadRequest)
87 .set_header("Content-Type", "text/html").flush()?
88 .add_to_body("<h1>400 Bad Request</h1>")
89 .add_to_body("<p>Parameter 'b' can only be a number from 0 to 255</p>").flush()?;
90
91 return Ok(());
92 };
93
94 let content = format!("<h1>{} - {} = {}</h1>", a, b, a as i16 - b as i16);
95
96 response.status_code(StatusCode::Ok)
97 .set_header("Content-Type", "text/html").flush()?
98 .add_to_body(content).flush()?;
99
100 Ok(())
101}
102
103fn not_found(request: Request, response: Response) -> io::Result<()> {
104 let content = format!("<p>Page '{}' could not been found</p>", request.uri);
105
106 response.status_code(StatusCode::NotFound)
107 .set_header("Content-Type", "text/html").flush()?
108 .add_to_body("<h1>404 Not Found</h1>")
109 .add_to_body(content).flush()?;
110
111 Ok(())
112}Sourcepub fn flush(self) -> Result<Body>
pub fn flush(self) -> Result<Body>
Examples found in repository?
examples/body.rs (line 15)
12fn say_hi(request: Request, response: Response) -> io::Result<()> {
13 if request.body.is_empty() {
14 response.status_code(StatusCode::BadRequest)
15 .set_header("Content-Type", "text/html").flush()?
16 .add_to_body("<h1>400 Bad Request</h1>")
17 .add_to_body("<p>No message was delivered via body</p>").flush()?;
18
19 return Ok(());
20 };
21
22 let content = format!("{{ \"message\": \"{}\" }}", request.body);
23
24 response.json(content)?;
25
26 Ok(())
27}
28
29fn not_found(request: Request, response: Response) -> io::Result<()> {
30 let content = format!("<p>Page '{}' could not been found</p>", request.uri);
31
32 response.status_code(StatusCode::NotFound)
33 .set_header("Content-Type", "text/html").flush()?
34 .add_to_body("<h1>404 Not Found</h1>")
35 .add_to_body(content).flush()?;
36
37 Ok(())
38}More examples
examples/hello_world.rs (line 21)
7fn main() -> io::Result<()> {
8 let listener = TcpListener::bind("127.0.0.1:8080")?;
9
10 for stream in listener.incoming().filter_map(Result::ok) {
11 let (request, response) = Http::from(stream)?;
12
13 println!("New Request: ");
14 println!("- method: {:?}", request.method);
15 println!("- uri: {:?}", request.uri);
16 println!("- params: {:?}", request.params);
17 println!("- http_version: {:?}", request.http_version);
18 println!("- headers: {:?}", request.headers);
19
20 response.status_code(StatusCode::Ok)
21 .set_header("Content-Type", "text/html").flush()?
22 .add_to_body("<h1>Hello from Rust!</h1>").flush()?;
23 }
24
25 Ok(())
26}examples/calculator.rs (line 14)
11fn add(request: Request, response: Response) -> io::Result<()> {
12 let Some(a) = request.params.get("a") else {
13 response.status_code(StatusCode::BadRequest)
14 .set_header("Content-Type", "text/html").flush()?
15 .add_to_body("<h1>400 Bad Request</h1>")
16 .add_to_body("<p>Parameter 'a' not found</p>").flush()?;
17
18 return Ok(());
19 };
20
21 let Some(b) = request.params.get("b") else {
22 response.status_code(StatusCode::BadRequest)
23 .set_header("Content-Type", "text/html").flush()?
24 .add_to_body("<h1>400 Bad Request</h1>")
25 .add_to_body("<p>Parameter 'b' not found</p>").flush()?;
26
27 return Ok(());
28 };
29
30 let Ok(a) = a.parse::<u8>() else {
31 response.status_code(StatusCode::BadRequest)
32 .set_header("Content-Type", "text/html").flush()?
33 .add_to_body("<h1>400 Bad Request</h1>")
34 .add_to_body("<p>Parameter 'a' can only be a number from 0 to 255</p>").flush()?;
35
36 return Ok(());
37 };
38
39 let Ok(b) = b.parse::<u8>() else {
40 response.status_code(StatusCode::BadRequest)
41 .set_header("Content-Type", "text/html").flush()?
42 .add_to_body("<h1>400 Bad Request</h1>")
43 .add_to_body("<p>Parameter 'b' can only be a number from 0 to 255</p>").flush()?;
44
45 return Ok(());
46 };
47
48 let content = format!("<h1>{} + {} = {}</h1>", a, b, a as u16 + b as u16);
49
50 response.status_code(StatusCode::Ok)
51 .set_header("Content-Type", "text/html").flush()?
52 .add_to_body(content).flush()?;
53
54 Ok(())
55}
56
57fn sub(request: Request, response: Response) -> io::Result<()> {
58 let Some(a) = request.params.get("a") else {
59 response.status_code(StatusCode::BadRequest)
60 .set_header("Content-Type", "text/html").flush()?
61 .add_to_body("<h1>400 Bad Request</h1>")
62 .add_to_body("<p>Parameter 'a' not found</p>").flush()?;
63
64 return Ok(());
65 };
66
67 let Some(b) = request.params.get("b") else {
68 response.status_code(StatusCode::BadRequest)
69 .set_header("Content-Type", "text/html").flush()?
70 .add_to_body("<h1>400 Bad Request</h1>")
71 .add_to_body("<p>Parameter 'b' not found</p>").flush()?;
72
73 return Ok(());
74 };
75
76 let Ok(a) = a.parse::<u8>() else {
77 response.status_code(StatusCode::BadRequest)
78 .set_header("Content-Type", "text/html").flush()?
79 .add_to_body("<h1>400 Bad Request</h1>")
80 .add_to_body("<p>Parameter 'a' can only be a number from 0 to 255</p>").flush()?;
81
82 return Ok(());
83 };
84
85 let Ok(b) = b.parse::<u8>() else {
86 response.status_code(StatusCode::BadRequest)
87 .set_header("Content-Type", "text/html").flush()?
88 .add_to_body("<h1>400 Bad Request</h1>")
89 .add_to_body("<p>Parameter 'b' can only be a number from 0 to 255</p>").flush()?;
90
91 return Ok(());
92 };
93
94 let content = format!("<h1>{} - {} = {}</h1>", a, b, a as i16 - b as i16);
95
96 response.status_code(StatusCode::Ok)
97 .set_header("Content-Type", "text/html").flush()?
98 .add_to_body(content).flush()?;
99
100 Ok(())
101}
102
103fn not_found(request: Request, response: Response) -> io::Result<()> {
104 let content = format!("<p>Page '{}' could not been found</p>", request.uri);
105
106 response.status_code(StatusCode::NotFound)
107 .set_header("Content-Type", "text/html").flush()?
108 .add_to_body("<h1>404 Not Found</h1>")
109 .add_to_body(content).flush()?;
110
111 Ok(())
112}pub fn text<T: Display>(self, text: T) -> Result<()>
Sourcepub fn html<H: Display>(self, html: H) -> Result<()>
pub fn html<H: Display>(self, html: H) -> Result<()>
Examples found in repository?
examples/quick_responses.rs (line 34)
31fn add(request: Request, response: Response) -> io::Result<()> {
32 let Some(a) = request.params.get("a") else {
33 response.status_code(StatusCode::BadRequest)
34 .html(&DIALOG_A_NOT_FOUND)?;
35
36 return Ok(());
37 };
38
39 let Some(b) = request.params.get("b") else {
40 response.status_code(StatusCode::BadRequest)
41 .html(&DIALOG_B_NOT_FOUND)?;
42
43 return Ok(());
44 };
45
46 let Ok(a) = a.parse::<u8>() else {
47 response.status_code(StatusCode::BadRequest)
48 .html(&DIALOG_A_INVALID)?;
49
50 return Ok(());
51 };
52
53 let Ok(b) = b.parse::<u8>() else {
54 response.status_code(StatusCode::BadRequest)
55 .html(&DIALOG_B_INVALID)?;
56 return Ok(());
57 };
58
59 let content = format!("<h1>{} + {} = {}</h1>", a, b, a as u16 + b as u16);
60
61 response.html(content)?;
62
63 Ok(())
64}
65
66fn sub(request: Request, response: Response) -> io::Result<()> {
67 let Some(a) = request.params.get("a") else {
68 response.status_code(StatusCode::BadRequest)
69 .html(&DIALOG_A_NOT_FOUND)?;
70
71 return Ok(());
72 };
73
74 let Some(b) = request.params.get("b") else {
75 response.status_code(StatusCode::BadRequest)
76 .html(&DIALOG_B_NOT_FOUND)?;
77
78 return Ok(());
79 };
80
81 let Ok(a) = a.parse::<u8>() else {
82 response.status_code(StatusCode::BadRequest)
83 .html(&DIALOG_A_INVALID)?;
84
85 return Ok(());
86 };
87
88 let Ok(b) = b.parse::<u8>() else {
89 response.status_code(StatusCode::BadRequest)
90 .html(&DIALOG_B_INVALID)?;
91 return Ok(());
92 };
93
94 let content = format!("<h1>{} - {} = {}</h1>", a, b, a as i16 - b as i16);
95
96 response.html(content)?;
97
98 Ok(())
99}
100
101fn not_found(request: Request, response: Response) -> io::Result<()> {
102 let content = format!("
103 <h1>400 Bad Request</h1>
104 <p>Page '{}' could not been found</p>
105 ", request.uri);
106
107 response.status_code(StatusCode::NotFound)
108 .html(content)?;
109
110 Ok(())
111}pub fn json<J: Display>(self, json: J) -> Result<()>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Header
impl RefUnwindSafe for Header
impl Send for Header
impl Sync for Header
impl Unpin for Header
impl UnwindSafe for Header
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more