package ctx import ( "context" "net/http" "strings" "github.com/unistack-org/micro/v3/metadata" ) // FromRequest creates context with metadata from http.Request func FromRequest(r *http.Request) context.Context { ctx := r.Context() md, ok := metadata.FromIncomingContext(ctx) if !ok { md = metadata.New(len(r.Header) + 2) } for key, val := range r.Header { md.Set(key, strings.Join(val, ",")) } // pass http host md["Host"] = r.Host // pass http method md["Method"] = r.Method return metadata.NewIncomingContext(ctx, md) }