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