1use lazy_sock::{Method, Response, lazy_sock};
4
5#[tokio::main]
6async fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let server = lazy_sock!("/tmp/lazy-sock-demo.sock");
8
9 server
11 .route(Method::Get, "/", |_req| {
12 Response::json(r#"{"message": "Hello, World!", "status": "success"}"#)
13 })
14 .await;
15
16 server
18 .route(Method::Get, "/health", |_req| {
19 Response::json(r#"{"status": "healthy"}"#)
20 })
21 .await;
22
23 server
25 .route(Method::Post, "/echo", |req| match req.body_string() {
26 Ok(body) if !body.is_empty() => Response::json(&format!(r#"{{"echo": "{}"}}"#, body)),
27 Ok(_) => Response::new(400).with_text("Request body is empty"),
28 Err(_) => Response::new(400).with_text("Invalid UTF-8 in request body"),
29 })
30 .await;
31
32 server
34 .route(Method::Get, "/html", |_req| {
35 Response::html(
36 r#"
37 <!DOCTYPE html>
38 <html>
39 <head><title>Lazy Sock Demo</title></head>
40 <body><h1>Hello from Lazy Sock!</h1></body>
41 </html>
42 "#,
43 )
44 })
45 .await;
46
47 println!("Lazy Sock Demo Server Starting...");
48 println!("Socket: /tmp/lazy-sock-demo.sock");
49 println!("Try these commands:");
50 println!(" curl --unix-socket /tmp/lazy-sock-demo.sock http://localhost/");
51 println!(" curl --unix-socket /tmp/lazy-sock-demo.sock http://localhost/health");
52 println!(" curl --unix-socket /tmp/lazy-sock-demo.sock http://localhost/html");
53 println!(
54 " curl --unix-socket /tmp/lazy-sock-demo.sock -X POST http://localhost/echo -d 'Hello from curl!'"
55 );
56 println!("Press Ctrl+C to stop");
57 println!();
58
59 server.run().await?;
61
62 println!("Server stopped gracefully.");
63 Ok(())
64}