diff options
| author | mo khan <mo@mokhan.ca> | 2025-05-29 16:51:04 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-05-29 16:51:04 -0600 |
| commit | aa5d0a370f819b17efa10ec27aab611213576273 (patch) | |
| tree | c549276360a903e9df15304f5f5f14ad02a21688 /src/server.rs | |
| parent | 7fe231a39484858a9f2268f76c675cb41e8629bd (diff) | |
refactor: extract an http module
Diffstat (limited to 'src/server.rs')
| -rw-r--r-- | src/server.rs | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/src/server.rs b/src/server.rs deleted file mode 100644 index 709aba1..0000000 --- a/src/server.rs +++ /dev/null @@ -1,41 +0,0 @@ -use std::fs; -use std::io::BufReader; -use std::io::prelude::*; -use std::net::TcpListener; -use std::net::TcpStream; - -pub struct Server { - bind: String, -} - -impl Server { - pub fn new(bind: String) -> Server { - Server { bind } - } - - pub fn start(&self) { - let listener = TcpListener::bind(self.bind.clone()).unwrap(); - for next_stream in listener.incoming() { - self.handle(next_stream.unwrap()); - } - } - - pub fn handle(&self, mut stream: TcpStream) { - let io = BufReader::new(&stream); - let request_line = io.lines().next().unwrap().unwrap(); - - let (status_line, filename) = match &request_line[..] { - "GET / HTTP/1.1" => ("HTTP/1.1 200 OK", "./public/index.html"), - "GET /.well-known/oauth-authorization-server HTTP/1.1" => { - ("HTTP/1.1 200 OK", "./public/metadata.json") - } - _ => ("HTTP/1.1 404 NOT FOUND", "./public/404.html"), - }; - - let contents = fs::read_to_string(filename).unwrap(); - let length = contents.len(); - let response = format!("{status_line}\r\nContent-Length: {length}\r\n\r\n{contents}"); - - stream.write_all(response.as_bytes()).unwrap(); - } -} |
