@@ -9,44 +9,49 @@ import (
99)
1010
1111// LoggingMiddleware logs HTTP requests.
12- func LoggingMiddleware (logger * log.Logger , domain string , identifier string , next http.Handler ) http.Handler {
13- return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
14- start := time .Now ()
15-
16- rw := & responseWriter {ResponseWriter : w , statusCode : 200 }
17-
18- next .ServeHTTP (rw , r )
19-
20- duration := time .Since (start )
21-
22- entry := logger .WithFields (log.Fields {
23- "domain" : domain ,
24- "identifier" : identifier ,
25- "method" : r .Method ,
26- "url" : r .URL .String (),
27- "remote_addr" : r .RemoteAddr ,
28- "status_code" : rw .statusCode ,
29- "duration" : duration .Seconds (),
12+ func LoggingMiddleware (logger * log.Logger , domain string , identifier string ) MiddlewareFunc {
13+ return func (next http.Handler ) http.Handler {
14+ return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
15+ start := time .Now ()
16+
17+ rw := & responseWriter {ResponseWriter : w , statusCode : http .StatusOK }
18+
19+ next .ServeHTTP (rw , r )
20+
21+ duration := time .Since (start )
22+
23+ entry := logger .WithFields (log.Fields {
24+ "domain" : domain ,
25+ "identifier" : identifier ,
26+ "method" : r .Method ,
27+ "url" : r .URL .String (),
28+ "remote_addr" : r .RemoteAddr ,
29+ "status_code" : rw .statusCode ,
30+ "duration" : duration .Seconds (),
31+ })
32+ entry .Info ("Handled request" )
33+
34+ if tui .IsEnabled () {
35+ tui .UpdateLog (identifier , entry )
36+ }
3037 })
31- entry .Info ("Handled request" )
32-
33- if tui .IsEnabled () {
34- tui .UpdateLog (identifier , entry )
35- }
36- })
38+ }
3739}
3840
3941// TimeoutMiddleware applies a timeout to HTTP requests.
40- func TimeoutMiddleware (timeout time.Duration , next http.Handler ) http.Handler {
41- return http .TimeoutHandler (next , timeout , "Request timed out" )
42+ func TimeoutMiddleware (timeout time.Duration ) MiddlewareFunc {
43+ return func (next http.Handler ) http.Handler {
44+ return http .TimeoutHandler (next , timeout , "Request timed out" )
45+ }
4246}
4347
44- // responseWriter is a wrapper for http.ResponseWriter that captures the status code.
48+ // responseWriter wraps http.ResponseWriter to capture the status code.
4549type responseWriter struct {
4650 http.ResponseWriter
4751 statusCode int
4852}
4953
54+ // WriteHeader sets the HTTP status code.
5055func (rw * responseWriter ) WriteHeader (code int ) {
5156 rw .statusCode = code
5257 rw .ResponseWriter .WriteHeader (code )
0 commit comments