1use std::{
2 io::{BufRead, BufReader, Write},
3 net::TcpListener,
4};
5
6use quad_snd::*;
7
8const CLICK: &[u8] = include_bytes!("./sound.ogg");
9
10fn main() {
11 let ctx = AudioContext::new();
12 let click = Sound::load(&ctx, CLICK);
13
14 let port = std::env::var("PORT")
15 .ok()
16 .and_then(|p| p.parse::<u16>().ok())
17 .unwrap_or(8668);
18 let listener = TcpListener::bind(("0.0.0.0", port)).expect("cant bind");
19
20 for stream in listener.incoming() {
21 let Ok(mut stream) = stream else {
22 continue;
23 };
24 click.play(&ctx, PlaySoundParams::default());
25 // exhaust connection to not get "connection reset by peer"
26 BufReader::new(&stream)
27 .lines()
28 .flatten()
29 .take_while(|line| !line.is_empty())
30 .for_each(drop);
31 // this never "fails"
32 let response = "HTTP/1.1 200 OK\r\n\r\n";
33 let _ = stream.write_all(response.as_bytes());
34 }
35}