Skip to content

Instantly share code, notes, and snippets.

@carlosm27
Created April 18, 2023 23:53
Show Gist options
  • Save carlosm27/64a004546d8de1fa89d583bfca6cba25 to your computer and use it in GitHub Desktop.
Save carlosm27/64a004546d8de1fa89d583bfca6cba25 to your computer and use it in GitHub Desktop.

Revisions

  1. carlosm27 revised this gist Apr 18, 2023. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions main.rs
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,4 @@
    ...
    use tower_http::trace::{self, TraceLayer};
    use tracing::Level;

  2. carlosm27 created this gist Apr 18, 2023.
    42 changes: 42 additions & 0 deletions main.rs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,42 @@
    use tower_http::trace::{self, TraceLayer};
    use tracing::Level;

    #[tokio::main]
    async fn main() {
    tracing_subscriber::registry()
    .with(tracing_subscriber::fmt::layer())
    .init();

    let router_svc = Router::new()
    .route("/", get(|| async { "Hello, World!" }))
    .layer(
    TraceLayer::new_for_http()
    .make_span_with(
    trace::DefaultMakeSpan::new()
    .level(Level::INFO)
    )
    .on_response(
    trace::DefaultOnResponse::new()
    .level(Level::INFO)),
    );

    let service = tower::service_fn(move |req: Request<Body>| {
    let router_svc = router_svc.clone();
    async move {
    if req.method() == Method::CONNECT {
    proxy(req).await
    } else {
    router_svc.oneshot(req).await.map_err(|err| match err {})
    }
    }
    });

    let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
    tracing::debug!("listening on {}", addr);
    axum::Server::bind(&addr)
    .http1_preserve_header_case(true)
    .http1_title_case_headers(true)
    .serve(Shared::new(service))
    .await
    .unwrap();
    }