]> piware.de Git - learn-rust.git/blob - tokio-tutorial-jbarszczewski/src/main.rs
tokio-tutorial-jbarszczewski: Initial savings balance API
[learn-rust.git] / tokio-tutorial-jbarszczewski / src / main.rs
1 use tokio::io::AsyncWriteExt;
2 use tokio::net::{TcpListener, TcpStream};
3
4 #[tokio::main]
5 async fn main() {
6     let listener = TcpListener::bind("127.0.0.1:8181").await.unwrap();
7
8     loop {
9         let (stream, _) = listener.accept().await.unwrap();
10         handle_connection(stream).await;
11     }
12 }
13
14 async fn handle_connection(mut stream: TcpStream) {
15     let contents = "{\"balance\": 0.00}";
16
17     let response = format!(
18         "HTTP/1.1 200 OK\r\nContent-Type: application/json\r\nContent-Length: {}\r\n\r\n{}",
19         contents.len(),
20         contents
21     );
22     assert!(stream.write(response.as_bytes()).await.unwrap() > 0);
23     stream.flush().await.unwrap();
24 }