MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / Metadata

Function Metadata

pkg/webmiddleware/metadata.go:26–46  ·  view source on GitHub ↗

Metadata returns a middleware that sets gRPC metadata from the request headers.

(keys ...string)

Source from the content-addressed store, hash-verified

24
25// Metadata returns a middleware that sets gRPC metadata from the request headers.
26func Metadata(keys ...string) MiddlewareFunc {
27 return func(next http.Handler) http.Handler {
28 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
29 ctx := r.Context()
30 header := textproto.MIMEHeader(r.Header)
31 md := make(metadata.MD)
32 for _, key := range keys {
33 if value := header.Values(key); value != nil {
34 md[strings.ToLower(key)] = value
35 }
36 }
37 if len(md) > 0 {
38 if existingMD, ok := metadata.FromIncomingContext(ctx); ok {
39 md = metadata.Join(existingMD, md)
40 }
41 ctx = metadata.NewIncomingContext(ctx, md)
42 }
43 next.ServeHTTP(w, r.WithContext(ctx))
44 })
45 }
46}

Callers 6

RegisterRoutesMethod · 0.92
RegisterRoutesMethod · 0.92
RegisterRoutesMethod · 0.92
NewFunction · 0.92
RegisterRoutesMethod · 0.92
TestMetadataFunction · 0.85

Calls 3

ContextMethod · 0.65
JoinMethod · 0.65
ServeHTTPMethod · 0.45

Tested by 1

TestMetadataFunction · 0.68