From 6a7aca8281b44c15da24f15113aa67e2832023d1 Mon Sep 17 00:00:00 2001 From: AlejandroHerr Date: Sat, 6 Sep 2025 13:12:55 +0200 Subject: [PATCH 1/2] feat: use chi request ids --- go.mod | 1 - go.sum | 2 -- pkg/api/middlewares.go | 30 +++--------------------------- 3 files changed, 3 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index d778a51..895bbc3 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,6 @@ require ( github.com/go-chi/chi/v5 v5.2.1 github.com/go-chi/render v1.0.3 github.com/golang-cz/devslog v0.0.13 - github.com/google/uuid v1.6.0 ) require github.com/ajg/form v1.5.1 // indirect diff --git a/go.sum b/go.sum index 1d48e3e..5446d35 100644 --- a/go.sum +++ b/go.sum @@ -6,5 +6,3 @@ github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4= github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0= github.com/golang-cz/devslog v0.0.13 h1:JkJ6PPNSOCBpYyU03v3xw7WgpChQ3AYFqgRbYBhUk/Y= github.com/golang-cz/devslog v0.0.13/go.mod h1:bSe5bm0A7Nyfqtijf1OMNgVJHlWEuVSXnkuASiE1vV8= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= diff --git a/pkg/api/middlewares.go b/pkg/api/middlewares.go index f3d096a..254b7c0 100644 --- a/pkg/api/middlewares.go +++ b/pkg/api/middlewares.go @@ -1,47 +1,23 @@ package api import ( - "context" "log/slog" "net/http" "time" "github.com/go-chi/chi/v5" - "github.com/go-chi/chi/v5/middleware" - "github.com/google/uuid" + chimiddleware "github.com/go-chi/chi/v5/middleware" ) -type RequestIDContextKey struct{} - -func RequestIDMiddleware() func(http.Handler) http.Handler { - return func(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ww := middleware.NewWrapResponseWriter(w, r.ProtoMajor) - - requestID := r.Header.Get("X-Request-ID") - if requestID == "" { - requestID = uuid.New().String() - } - - ww.Header().Set("X-Request-ID", requestID) - - ctx := r.Context() - ctx = context.WithValue(ctx, RequestIDContextKey{}, requestID) - - next.ServeHTTP(ww, r.WithContext(ctx)) - }) - } -} - func RequestLoggerMiddleware(logger *slog.Logger) func(http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { start := time.Now() // Create a response writer wrapper to capture status and size - ww := middleware.NewWrapResponseWriter(w, r.ProtoMajor) + ww := chimiddleware.NewWrapResponseWriter(w, r.ProtoMajor) - requestID, ok := r.Context().Value(RequestIDContextKey{}).(string) + requestID, ok := r.Context().Value(chimiddleware.RequestIDKey).(string) if !ok { requestID = "unknown" } From b6ddaf4dff0d607c004cec7a0d95c7a151a78dfa Mon Sep 17 00:00:00 2001 From: AlejandroHerr Date: Sat, 6 Sep 2025 13:13:34 +0200 Subject: [PATCH 2/2] chore: move middlewares to own pkg --- pkg/{api/middlewares.go => middleware/middleware.go} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename pkg/{api/middlewares.go => middleware/middleware.go} (99%) diff --git a/pkg/api/middlewares.go b/pkg/middleware/middleware.go similarity index 99% rename from pkg/api/middlewares.go rename to pkg/middleware/middleware.go index 254b7c0..0d278ba 100644 --- a/pkg/api/middlewares.go +++ b/pkg/middleware/middleware.go @@ -1,4 +1,4 @@ -package api +package middleware import ( "log/slog"