Enhance JSON payload decoding to accept both typed and pointer payloads, and add corresponding tests
All checks were successful
ci/woodpecker/push/build-image Pipeline was successful

This commit is contained in:
2026-06-10 22:11:38 -05:00
parent 481215c5db
commit c417c892d9
3 changed files with 66 additions and 0 deletions

View File

@@ -18,6 +18,18 @@ import (
// Errors include a small amount of operation context ("extract payload", "decode raw payload").
// Callers typically wrap these with a provider/kind label.
func DecodeJSONPayload[T any](in event.Event) (T, error) {
var zero T
if typed, ok := in.Payload.(T); ok {
return typed, nil
}
if ptr, ok := in.Payload.(*T); ok {
if ptr == nil {
return zero, fmt.Errorf("extract payload: payload pointer is nil")
}
return *ptr, nil
}
return fknormalize.DecodeJSONPayload[T](in)
}