feat: add metadata func option

This commit is contained in:
Kevin Franklin Kim 2024-07-10 11:39:35 +02:00
parent 3a414aba79
commit 70b8a970c5
No known key found for this signature in database
2 changed files with 35 additions and 10 deletions

View File

@ -18,11 +18,12 @@ import (
type (
Subscriber struct {
l *zap.Logger
uuidFunc func() string
messages chan *message.Message
middlewares []SubscriberMiddleware
closed bool
l *zap.Logger
uuidFunc func() string
messages chan *message.Message
metadataFunc func(r *http.Request) map[string]string
middlewares []SubscriberMiddleware
closed bool
}
SubscriberOption func(*Subscriber)
SubscriberHandler func(l *zap.Logger, r *http.Request, payload *gtag.Payload) error
@ -39,6 +40,12 @@ func SubscriberWithUUIDFunc(v func() string) SubscriberOption {
}
}
func SubscriberWithMetadataFunc(v func(r *http.Request) map[string]string) SubscriberOption {
return func(o *Subscriber) {
o.metadataFunc = v
}
}
func SubscriberWithMiddlewares(v ...SubscriberMiddleware) SubscriberOption {
return func(o *Subscriber) {
o.middlewares = append(o.middlewares, v...)
@ -141,6 +148,12 @@ func (s *Subscriber) handle(l *zap.Logger, r *http.Request, payload *gtag.Payloa
msg.Metadata.Set(name, strings.Join(headers, ","))
}
if s.metadataFunc != nil {
for k, v := range s.metadataFunc(r) {
msg.Metadata.Set(k, v)
}
}
for k, v := range msg.Metadata {
l = l.With(zap.String(k, v))
}

View File

@ -15,11 +15,12 @@ import (
type (
Subscriber struct {
l *zap.Logger
uuidFunc func() string
messages chan *message.Message
middlewares []SubscriberMiddleware
closed bool
l *zap.Logger
uuidFunc func() string
messages chan *message.Message
metadataFunc func(r *http.Request) map[string]string
middlewares []SubscriberMiddleware
closed bool
}
SubscriberOption func(*Subscriber)
SubscriberHandler func(l *zap.Logger, r *http.Request, payload *mpv2.Payload[any]) error
@ -36,6 +37,11 @@ func SubscriberWithUUIDFunc(v func() string) SubscriberOption {
}
}
func SubscriberWithMetadataFunc(v func(r *http.Request) map[string]string) SubscriberOption {
return func(o *Subscriber) {
o.metadataFunc = v
}
}
func SubscriberWithMiddlewares(v ...SubscriberMiddleware) SubscriberOption {
return func(o *Subscriber) {
o.middlewares = append(o.middlewares, v...)
@ -116,6 +122,12 @@ func (s *Subscriber) handle(l *zap.Logger, r *http.Request, payload *mpv2.Payloa
msg.Metadata.Set(name, strings.Join(headers, ","))
}
if s.metadataFunc != nil {
for k, v := range s.metadataFunc(r) {
msg.Metadata.Set(k, v)
}
}
for k, v := range msg.Metadata {
l = l.With(zap.String(k, v))
}