Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
httpd: Use `TraceLayer` on uppermost router
xphoniex committed 3 years ago
commit a93803c8ca169cbc986ffa9eac8c83aa07df51db
parent 8e688fef341d3126c10a52b46f236753562e921c
2 files changed +11 -35
modified radicle-httpd/src/api.rs
@@ -2,19 +2,15 @@ use std::collections::HashMap;
use std::sync::Arc;
use std::time::Duration;

-
use axum::body::{Body, BoxBody};
use axum::http::header::{AUTHORIZATION, CONTENT_TYPE};
use axum::http::Method;
use axum::response::{IntoResponse, Json};
use axum::routing::get;
use axum::{Extension, Router};
-
use hyper::http::{Request, Response};
use serde::{Deserialize, Serialize};
use serde_json::json;
use tokio::sync::RwLock;
use tower_http::cors::{self, CorsLayer};
-
use tower_http::trace::TraceLayer;
-
use tracing::Span;

use radicle::cob::issue::Issues;
use radicle::identity::Id;
@@ -77,26 +73,6 @@ pub fn router(ctx: Context) -> Router {
                .allow_methods([Method::GET, Method::POST, Method::PUT])
                .allow_headers([CONTENT_TYPE, AUTHORIZATION]),
        )
-
        .layer(
-
            TraceLayer::new_for_http()
-
                .make_span_with(|request: &Request<Body>| {
-
                    tracing::info_span!(
-
                        "request",
-
                        method = %request.method(),
-
                        uri = %request.uri(),
-
                        status = tracing::field::Empty,
-
                        latency = tracing::field::Empty,
-
                    )
-
                })
-
                .on_response(
-
                    |response: &Response<BoxBody>, latency: Duration, span: &Span| {
-
                        span.record("status", &tracing::field::debug(response.status()));
-
                        span.record("latency", &tracing::field::debug(latency));
-

-
                        tracing::info!("Processed");
-
                    },
-
                ),
-
        )
}

async fn root_handler(Extension(ctx): Extension<Context>) -> impl IntoResponse {
modified radicle-httpd/src/lib.rs
@@ -55,7 +55,16 @@ pub async fn run(options: Options) -> anyhow::Result<()> {

    let git_router = Router::new()
        .route("/:project/*request", any(git_handler))
-
        .layer(Extension(profile.clone()))
+
        .layer(Extension(profile.clone()));
+

+
    let ctx = api::Context::new(profile);
+
    let api_router = api::router(ctx);
+

+
    tracing::info!("listening on http://{}", options.listen);
+

+
    let app = Router::new()
+
        .merge(git_router)
+
        .nest("/api", api_router)
        .layer(
            TraceLayer::new_for_http()
                .make_span_with(|request: &Request<Body>| {
@@ -75,16 +84,7 @@ pub async fn run(options: Options) -> anyhow::Result<()> {
                        tracing::info!("Processed");
                    },
                ),
-
        );
-

-
    let ctx = api::Context::new(profile);
-
    let api_router = api::router(ctx);
-

-
    tracing::info!("listening on http://{}", options.listen);
-

-
    let app = Router::new()
-
        .merge(git_router)
-
        .nest("/api", api_router)
+
        )
        .into_make_service_with_connect_info::<SocketAddr>();

    axum::Server::bind(&options.listen)