github.com/kyleu/dbaudit@v0.0.2-0.20240321155047-ff2f2c940496/app/lib/telemetry/httpmetrics/httpheaders.go (about) 1 // Package httpmetrics - Content managed by Project Forge, see [projectforge.md] for details. 2 package httpmetrics 3 4 import ( 5 "context" 6 "net/http" 7 8 "go.opentelemetry.io/otel" 9 "go.opentelemetry.io/otel/propagation" 10 "golang.org/x/exp/maps" 11 12 "github.com/kyleu/dbaudit/app/util" 13 ) 14 15 var _ propagation.TextMapCarrier = (*headerCarrier)(nil) 16 17 type headerCarrier struct { 18 h http.Header 19 } 20 21 func (hc headerCarrier) Get(key string) string { 22 return hc.h.Get(key) 23 } 24 25 func (hc headerCarrier) Set(key string, value string) { 26 hc.h.Set(key, value) 27 } 28 29 func (hc headerCarrier) Keys() []string { 30 return maps.Keys(hc.h) 31 } 32 33 func ExtractHeaders(r *http.Request, logger util.Logger) (context.Context, util.Logger) { 34 return otel.GetTextMapPropagator().Extract(r.Context(), headerCarrier{h: r.Header}), logger 35 }