| 31 | const maxAPIRequestBodyBytes int64 = 4 << 20 |
| 32 | |
| 33 | func requestLoggingMiddleware(logger *slog.Logger) gin.HandlerFunc { |
| 34 | if logger == nil { |
| 35 | logger = slog.Default() |
| 36 | } |
| 37 | |
| 38 | return func(c *gin.Context) { |
| 39 | started := time.Now() |
| 40 | c.Next() |
| 41 | |
| 42 | logger.Info( |
| 43 | "httpapi: request", |
| 44 | "method", c.Request.Method, |
| 45 | "path", c.FullPath(), |
| 46 | "status", c.Writer.Status(), |
| 47 | "latency_ms", time.Since(started).Milliseconds(), |
| 48 | "client_ip", c.ClientIP(), |
| 49 | ) |
| 50 | } |
| 51 | } |
| 52 | |
| 53 | func corsMiddleware(boundHost string) gin.HandlerFunc { |
| 54 | return func(c *gin.Context) { |