feat: some refactoring

This commit is contained in:
2025-11-22 22:23:49 +03:00
parent a247e6213e
commit 51f30b516e
29 changed files with 1094 additions and 129 deletions

View File

@@ -0,0 +1,42 @@
package middleware
import (
"context"
"net/http"
"time"
"git.nwaifu.su/sergey/MyGoServer/internal/apiserver/logger"
rhttp "git.nwaifu.su/sergey/MyGoServer/pkg/http"
)
// LoggingMiddleware logs HTTP requests
func LoggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
// Use the custom response writer to capture status code
rw := rhttp.NewResponseWriter(w)
next.ServeHTTP(rw, r)
// Log the request
logger := logger.GetLogger()
logger.WithFields(map[string]interface{}{
"method": r.Method,
"uri": r.RequestURI,
"remote_addr": r.RemoteAddr,
"user_agent": r.UserAgent(),
"status_code": rw.GetStatusCode(),
"duration": time.Since(start).String(),
"request_id": getRequestID(r.Context()),
}).Info("HTTP request")
})
}
// getRequestID retrieves request ID from context
func getRequestID(ctx context.Context) string {
if id, ok := ctx.Value("request_id").(string); ok {
return id
}
return ""
}