produce payload object from JSON

This commit is contained in:
Helmut Merz 2023-07-05 12:03:46 +02:00
parent b4d9338353
commit 31bdedc031
5 changed files with 22 additions and 4 deletions

View file

@ -92,12 +92,23 @@ type payload struct {
data interface{}
}
func (pl payload) String() string {
func (pl *payload) String() string {
b, err := json.Marshal(pl.data)
log.Err(err)
if err != nil {
log.Error().Err(err).Msg("payload.String()")
}
return string(b)
}
func Payload(d interface{}) lib.Payload {
return payload{d}
return &payload{d}
}
func FromJson[T any](s string) lib.Payload {
pl := &payload{new(T)}
err := json.Unmarshal([]byte(s), &pl.data)
if err != nil {
log.Error().Err(err).Msg("payload: FromJson()")
}
return pl
}

View file

@ -16,5 +16,4 @@ var (
Info = logging.GetLogger(nil).Info
Warn = logging.GetLogger(nil).Warn
Error = logging.GetLogger(nil).Error
Err = logging.GetLogger(nil).Err
)

View file

@ -28,6 +28,7 @@ var Levels = map[string]zerolog.Level{
type Logger = zerolog.Logger
var defaultLogger = log.Logger
var globalLogger *Logger = &log.Logger
type Cfg struct {
@ -36,6 +37,10 @@ type Cfg struct {
Level string
}
func SetDefault() {
globalLogger = &defaultLogger
}
func Setup(ctx lib.Context, cfg *Cfg, home string) {
if cfg == nil {
return // use unchanged predefined logger

View file

@ -38,6 +38,7 @@ func MakeT(tbase *testing.T) *T {
func SetUp(tbase *testing.T) *T {
t := MakeT(tbase)
logging.SetDefault()
return t
}

View file

@ -54,4 +54,6 @@ func PayloadTest(t *testing.T) {
pl2 := message.Payload(map[string]string{"activity": "development"})
t.AssertEqual(fmt.Sprint(pl2), `{"activity":"development"}`)
msg.WithPayload(pl2)
pl3 := message.FromJson[map[string]any](`{"activity": "development"}`)
t.AssertEqual(fmt.Sprint(pl3), `{"activity":"development"}`)
}