aboutsummaryrefslogtreecommitdiff
path: root/examples/callbacks.rs
blob: 76014d576a0e0231bc6471ed5664fb71e6fd2258 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//! `cargo run --example callbacks`

use windmark::context::HookContext;

#[windmark::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
  windmark::router::Router::new()
    .set_private_key_file("windmark_private.pem")
    .set_certificate_file("windmark_public.pem")
    .mount("/", windmark::success!("Hello!"))
    .set_pre_route_callback(|context: HookContext| {
      println!(
        "accepted connection from {} to {}",
        context.peer_address.unwrap().ip(),
        context.url.to_string()
      )
    })
    .set_post_route_callback(
      |context: HookContext, content: &mut windmark::response::Response| {
        content.content = content.content.replace("Hello", "Hi");

        println!(
          "closed connection from {}",
          context.peer_address.unwrap().ip()
        )
      },
    )
    .run()
    .await
}