@@ -25,6 +25,7 @@ import (
25
25
"net/http"
26
26
"sync"
27
27
28
+ "github.com/go-chi/chi/v5/middleware"
28
29
"github.com/optimizely/agent/config"
29
30
"github.com/rs/zerolog/log"
30
31
"go.opentelemetry.io/otel"
@@ -80,16 +81,6 @@ func (gen *traceIDGenerator) NewIDs(ctx context.Context) (trace.TraceID, trace.S
80
81
return tid , sid
81
82
}
82
83
83
- type statusRecorder struct {
84
- http.ResponseWriter
85
- statusCode int
86
- }
87
-
88
- func (r * statusRecorder ) WriteHeader (code int ) {
89
- r .statusCode = code
90
- r .ResponseWriter .WriteHeader (code )
91
- }
92
-
93
84
func AddTracing (conf config.TracingConfig , tracerName , spanName string ) func (http.Handler ) http.Handler {
94
85
return func (next http.Handler ) http.Handler {
95
86
fn := func (w http.ResponseWriter , r * http.Request ) {
@@ -107,15 +98,12 @@ func AddTracing(conf config.TracingConfig, tracerName, spanName string) func(htt
107
98
attribute .String (OptlySDKHeader , r .Header .Get (OptlySDKHeader )),
108
99
)
109
100
110
- rec := & statusRecorder {
111
- ResponseWriter : w ,
112
- statusCode : http .StatusOK ,
113
- }
101
+ respWriter := middleware .NewWrapResponseWriter (w , r .ProtoMajor )
114
102
115
- next .ServeHTTP (rec , r .WithContext (ctx ))
103
+ next .ServeHTTP (respWriter , r .WithContext (ctx ))
116
104
117
105
span .SetAttributes (
118
- semconv .HTTPStatusCodeKey .Int (rec . statusCode ),
106
+ semconv .HTTPStatusCodeKey .Int (respWriter . Status () ),
119
107
)
120
108
}
121
109
return http .HandlerFunc (fn )
0 commit comments