]>
Commit | Line | Data |
---|---|---|
74b04a01 XL |
1 | use std::fs; |
2 | use std::io::prelude::*; | |
3 | use std::net::TcpListener; | |
4 | use std::net::TcpStream; | |
5 | ||
6 | fn main() { | |
7 | let listener = TcpListener::bind("127.0.0.1:7878").unwrap(); | |
8 | ||
9 | for stream in listener.incoming() { | |
10 | let stream = stream.unwrap(); | |
11 | ||
12 | handle_connection(stream); | |
13 | } | |
14 | } | |
15 | ||
16 | fn handle_connection(mut stream: TcpStream) { | |
f9f354fc | 17 | let mut buffer = [0; 1024]; |
74b04a01 XL |
18 | stream.read(&mut buffer).unwrap(); |
19 | ||
20 | let get = b"GET / HTTP/1.1\r\n"; | |
21 | ||
22 | if buffer.starts_with(get) { | |
04454e1e | 23 | let status_line = "HTTP/1.1 200 OK"; |
74b04a01 XL |
24 | let contents = fs::read_to_string("hello.html").unwrap(); |
25 | ||
f9f354fc | 26 | let response = format!( |
04454e1e FG |
27 | "{}\r\nContent-Length: {}\r\n\r\n{}", |
28 | status_line, | |
f9f354fc XL |
29 | contents.len(), |
30 | contents | |
31 | ); | |
74b04a01 XL |
32 | |
33 | stream.write(response.as_bytes()).unwrap(); | |
34 | stream.flush().unwrap(); | |
35 | // ANCHOR: here | |
36 | // --snip-- | |
37 | } else { | |
6a06907d | 38 | let status_line = "HTTP/1.1 404 NOT FOUND"; |
74b04a01 XL |
39 | let contents = fs::read_to_string("404.html").unwrap(); |
40 | ||
6a06907d XL |
41 | let response = format!( |
42 | "{}\r\nContent-Length: {}\r\n\r\n{}", | |
43 | status_line, | |
44 | contents.len(), | |
45 | contents | |
46 | ); | |
74b04a01 XL |
47 | |
48 | stream.write(response.as_bytes()).unwrap(); | |
49 | stream.flush().unwrap(); | |
50 | } | |
51 | // ANCHOR_END: here | |
52 | } |