Commit 0b29f54

mo khan <mo@mokhan.ca>
2025-04-04 22:39:08
refactor: remove go-chi dependency
1 parent 88a80a1
pkg/log/http.go
@@ -3,27 +3,21 @@ package log
 import (
 	"net/http"
 
-	"github.com/go-chi/chi/v5/middleware"
 	"github.com/rs/zerolog"
+	"github.com/xlgmokha/x/pkg/mapper"
 )
 
 func HTTP(logger *zerolog.Logger) func(http.Handler) http.Handler {
 	return func(next http.Handler) http.Handler {
 		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 			ctx := logger.WithContext(r.Context())
-			ww := middleware.NewWrapResponseWriter(w, r.ProtoMajor)
 
 			defer func() {
-				WithFields(ctx, Fields{
-					"status":      ww.Status(),
-					"method":      r.Method,
-					"path":        r.URL.Path,
-					"remote_host": r.RemoteAddr,
-				})
+				WithFields(ctx, mapper.MapFrom[*http.Request, Fields](r))
 				zerolog.Ctx(ctx).Print()
 			}()
 
-			next.ServeHTTP(ww, r.WithContext(ctx))
+			next.ServeHTTP(w, r.WithContext(ctx))
 		})
 	}
 }
pkg/log/init.go
@@ -0,0 +1,17 @@
+package log
+
+import (
+	"net/http"
+
+	"github.com/xlgmokha/x/pkg/mapper"
+)
+
+func init() {
+	mapper.Register[*http.Request, Fields](func(r *http.Request) Fields {
+		return Fields{
+			"method":      r.Method,
+			"path":        r.URL.Path,
+			"remote_host": r.RemoteAddr,
+		}
+	})
+}
pkg/log/log_test.go
@@ -69,9 +69,13 @@ func TestLog(t *testing.T) {
 		items, err := serde.FromJSON[map[string]interface{}](bufio.NewReader(&b))
 		require.NoError(t, err)
 
-		assert.Equal(t, float64(http.StatusTeapot), items["status"])
+		require.Contains(t, items, "method")
 		assert.Equal(t, "GET", items["method"])
+
+		require.Contains(t, items, "path")
 		assert.Equal(t, "/", items["path"])
+
+		require.Contains(t, items, "remote_host")
 		assert.Contains(t, items["remote_host"], "127.0.0.1")
 	})
 }
go.mod
@@ -3,7 +3,6 @@ module github.com/xlgmokha/x
 go 1.18
 
 require (
-	github.com/go-chi/chi/v5 v5.2.1
 	github.com/google/jsonapi v1.0.0
 	github.com/rs/zerolog v1.34.0
 	github.com/stretchr/testify v1.8.1
go.sum
@@ -2,8 +2,6 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/go-chi/chi/v5 v5.2.1 h1:KOIHODQj58PmL80G2Eak4WdvUzjSJSm0vG72crDCqb8=
-github.com/go-chi/chi/v5 v5.2.1/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops=
 github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/google/jsonapi v1.0.0 h1:qIGgO5Smu3yJmSs+QlvhQnrscdZfFhiV6S8ryJAglqU=
 github.com/google/jsonapi v1.0.0/go.mod h1:YYHiRPJT8ARXGER8In9VuLv4qvLfDmA9ULQqptbLE4s=