21 lines
477 B
Go
21 lines
477 B
Go
package middleware
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/ultisuite/ulti-backend/internal/api/apiresponse"
|
|
)
|
|
|
|
func TraceID(next http.Handler) http.Handler {
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
id := r.Header.Get(apiresponse.TraceIDHeader)
|
|
if id == "" {
|
|
id = apiresponse.GenerateTraceID()
|
|
}
|
|
|
|
w.Header().Set(apiresponse.TraceIDHeader, id)
|
|
ctx := apiresponse.WithTraceID(r.Context(), id)
|
|
next.ServeHTTP(w, r.WithContext(ctx))
|
|
})
|
|
}
|